自然语言结构化库
项目描述
NLStruct
自然语言结构化库。目前实现了嵌套NER模型和跨度分类模型,但可能还有其他算法。
如果这个库对您的研发有帮助,请考虑引用
@phdthesis{wajsburt:tel-03624928,
TITLE = {{Extraction and normalization of simple and structured entities in medical documents}},
AUTHOR = {Wajsb{\"u}rt, Perceval},
URL = {https://hal.archives-ouvertes.fr/tel-03624928},
SCHOOL = {{Sorbonne Universit{\'e}}},
YEAR = {2021},
MONTH = Dec,
KEYWORDS = {nlp ; structure ; extraction ; normalization ; clinical ; multilingual},
TYPE = {Theses},
PDF = {https://hal.archives-ouvertes.fr/tel-03624928/file/updated_phd_thesis_PW.pdf},
HAL_ID = {tel-03624928},
HAL_VERSION = {v1},
}
功能
- 无缝处理大型文档:它自动处理分词和句子分割。
- 无需重新训练:自动缓存机制会检测实验是否已运行
- 使用检查点暂停和恢复
- 易于导入和导出数据
- 处理嵌套或重叠的实体
- 对识别的实体进行多标签分类
- 严格或宽松的多标签端到端检索度量
- 使用rich-logger进行美观的日志记录
- 高度可定制,无需配置文件(请参阅train_ner.py)
- 基于transformers和pytorch_lightning构建
训练模型
如何训练NER模型
from nlstruct.recipes import train_ner
model = train_ner(
dataset={
"train": "path to your train brat/standoff data",
"val": 0.05, # or path to your validation data
# "test": # and optional path to your test data
},
finetune_bert=False,
seed=42,
bert_name="camembert/camembert-base",
fasttext_file="",
gpus=0,
xp_name="my-xp",
return_model=True,
)
model.save_pretrained("model.pt")
如何使用它
from nlstruct import load_pretrained
from nlstruct.datasets import load_from_brat, export_to_brat
ner = load_pretrained("model.pt")
ner.eval()
ner.predict({"doc_id": "doc-0", "text": "Je lui prescris du lorazepam."})
# Out:
# {'doc_id': 'doc-0',
# 'text': 'Je lui prescris du lorazepam.',
# 'entities': [{'entity_id': 0,
# 'label': ['substance'],
# 'attributes': [],
# 'fragments': [{'begin': 19,
# 'end': 28,
# 'label': 'substance',
# 'text': 'lorazepam'}],
# 'confidence': 0.9998705969553088}]}
export_to_brat(ner.predict(load_from_brat("path/to/brat/test")), filename_prefix="path/to/exported_brat")
如何训练一个NER模型,然后是一个跨度分类模型
from nlstruct.recipes import train_qualified_ner
model = train_qualified_ner(
dataset={
"train": "path to your train brat/standoff data",
"val": 0.05, # or path to your validation data
# "test": # and optional path to your test data
},
finetune_bert=False,
seed=42,
bert_name="camembert/camembert-base",
fasttext_file="",
gpus=0,
xp_name="my-xp",
return_model=True,
)
model.save_pretrained("model.pt")
集成
轻松集成多个模型(相同架构,不同种子)
model1 = load_pretrained("model-1.pt")
model2 = load_pretrained("model-2.pt")
model3 = load_pretrained("model-3.pt")
ensemble = model1.ensemble_with([model2, model3]).cuda()
export_to_brat(ensemble.predict(load_from_brat("path/to/brat/test")), filename_prefix="path/to/exported_brat")
高级使用
如果您需要进一步配置模型的训练,请直接修改位于recipes文件夹中的其中一个配方。
安装
此项目仍在开发中,可能发生变化。
pip install nlstruct==0.2.0
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
nlstruct-0.2.0.tar.gz (90.7 kB 查看哈希值)
构建分发
nlstruct-0.2.0-py3-none-any.whl (104.1 kB 查看哈希值)
关闭
nlstruct-0.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 013a220cf35fff434a8ac704bf46e2192b2be43039c1738cd18db5a8b917fd91 |
|
MD5 | 39e9f1972e07724abdacf13c40d1a75f |
|
BLAKE2b-256 | 5c17046f40653c059e7b13da662eeb59d83df35ed08d2f36f39fb7fd2133e994 |
关闭
nlstruct-0.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f42d083f44bd964c9638d4e1d554dfc8c9af0d61a4091ddd0cf1685ede5b3b7 |
|
MD5 | bb7a9005d67e1029ff1e7c3b4b861dbe |
|
BLAKE2b-256 | 841e2135e102f947800f8ccc58c1adc97dfee53f54c9a028a509df4e60698066 |