gpt4 book ai didi

python - 提供您自己的自定义标签来标记 nltk 中的数据?

转载 作者:行者123 更新时间:2023-12-01 09:31:37 24 4
gpt4 key购买 nike

运行以下代码时

from nltk import word_tokenize, pos_tag, ne_chunk


sentence = "Antacids is given to Jhon,Sodium Bicarbonate is given to Carl,Folic Acid to Jeery all works at Google "
print(ne_chunk(pos_tag(word_tokenize(sentence))))

我得到这个输出

(S
(GPE Antacids/NNP)
is/VBZ
given/VBN
to/TO
(PERSON Jhon/NNP)
,/,
(PERSON Sodium/NNP Bicarbonate/NNP)
is/VBZ
given/VBN
to/TO
(GPE Carl/NNP)
,/,
(PERSON Folic/NNP Acid/NNP)
to/TO
(GPE Jeery/NNP)
all/DT
works/NNS
at/IN
(ORGANIZATION Google/NNP))

我想将药物(如抗酸剂、钠、叶酸)分配到同一类别。

我可以使用哪个库来实现此目的?

最佳答案

您想在文本中保留一些拼写错误吗?例如JhonJohnJeeryJerry,普通名词大写(碳酸氢钠 会是小写的碳酸氢钠..)?

Python 库中的嵌入式 NER(命名实体识别)是使用干净文本进行训练的,因为文本拼写错误,因此使用通用 NER 很难达到 100% 的准确率。

使用正确的句子和 spacy 库,您可以获得正确的输出:

import spacy

nlp = spacy.load('en')
doc = nlp("Antacids is given to John, sodium bicarbonate is given to Carl, folic acid to Jerry all works at Google")

for token in doc:
print('token.i: {2}\ttoken.idx: {0}\ttoken.pos: {3:10}token.text: {1}'.
format(token.idx, token.text, token.i, token.pos_)

print('Entities', [(e.text, e.label_) for e in doc.ents])

结果(抗酸剂、碳酸氢钠和酸被标记为名词):

token.i: 0  token.idx: 0    token.pos: NOUN      token.text: Antacids
token.i: 1 token.idx: 9 token.pos: VERB token.text: is
token.i: 2 token.idx: 12 token.pos: VERB token.text: given
token.i: 3 token.idx: 18 token.pos: ADP token.text: to
token.i: 4 token.idx: 21 token.pos: PROPN token.text: John
token.i: 5 token.idx: 25 token.pos: PUNCT token.text: ,
token.i: 6 token.idx: 27 token.pos: NOUN token.text: sodium
token.i: 7 token.idx: 34 token.pos: NOUN token.text: bicarbonate
token.i: 8 token.idx: 46 token.pos: VERB token.text: is
token.i: 9 token.idx: 49 token.pos: VERB token.text: given
token.i: 10 token.idx: 55 token.pos: ADP token.text: to
token.i: 11 token.idx: 58 token.pos: PROPN token.text: Carl
token.i: 12 token.idx: 62 token.pos: PUNCT token.text: ,
token.i: 13 token.idx: 64 token.pos: ADJ token.text: folic
token.i: 14 token.idx: 70 token.pos: NOUN token.text: acid
token.i: 15 token.idx: 75 token.pos: ADP token.text: to
token.i: 16 token.idx: 78 token.pos: PROPN token.text: Jerry
token.i: 17 token.idx: 84 token.pos: DET token.text: all
token.i: 18 token.idx: 88 token.pos: VERB token.text: works
token.i: 19 token.idx: 94 token.pos: ADP token.text: at
token.i: 20 token.idx: 97 token.pos: PROPN token.text: Google

并且实体已正确标记:

Entities [('John', 'PERSON'), ('Carl', 'PERSON'), ('Jerry', 'PERSON'), ('Google', 'ORG')]

关于python - 提供您自己的自定义标签来标记 nltk 中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com