使用命名实体注释将标签合并到我的文件中
Merging tags into my file using named entity annotation
在学习文本挖掘的基础知识时,我 运行 遇到了以下问题:我必须使用命名实体注释来查找和定位命名实体。但是,一旦找到,标签必须包含在文档中。因此,例如:"Hello I am Koen" 必须导致“你好,我是 Koen < /PERSON>。
我想出了如何查找和标记命名实体,但我仍然坚持以正确的方式将它们放入文件中。我试过比较 ent.orth_ 是否在文件中,然后用标签 + ent.orth_ + 结束标签替换它。
print([(X, X.ent_iob_, X.ent_type_) for X in doc])
我用它来定位实体的位置和起点。
for ent in doc.ents:
entities.append(ent.orth_ + ", " + ent.label_)
我用它来创建一个既有原始形式又有标签的变量。
现在我有了带有所有原始形式和标签的变量,并且知道实体的开始和结束位置。然而,当我试图以某种方式替换它时,我的知识 运行 很短,找不到任何类似的例子。
试试这个:
import spacy
nlp = spacy.load("en_core_web_sm")
s ="Apple is looking at buying U.K. startup for billion"
doc = nlp(s)
def replaceSubstring(s, replacement, position, length_of_replaced):
s = s[:position] + replacement + s[position+length_of_replaced:]
return(s)
for ent in reversed(doc.ents):
#print(ent.text, ent.start_char, ent.end_char, ent.label_)
replacement = "<{}>{}</{}>".format(ent.label_,ent.text, ent.label_)
position = ent.start_char
length_of_replaced = ent.end_char - ent.start_char
s = replaceSubstring(s, replacement, position, length_of_replaced)
print(s)
#<ORG>Apple</ORG> is looking at buying <GPE>U.K.</GPE> startup for <MONEY> billion</MONEY>
在学习文本挖掘的基础知识时,我 运行 遇到了以下问题:我必须使用命名实体注释来查找和定位命名实体。但是,一旦找到,标签必须包含在文档中。因此,例如:"Hello I am Koen" 必须导致“你好,我是
我想出了如何查找和标记命名实体,但我仍然坚持以正确的方式将它们放入文件中。我试过比较 ent.orth_ 是否在文件中,然后用标签 + ent.orth_ + 结束标签替换它。
print([(X, X.ent_iob_, X.ent_type_) for X in doc])
我用它来定位实体的位置和起点。
for ent in doc.ents:
entities.append(ent.orth_ + ", " + ent.label_)
我用它来创建一个既有原始形式又有标签的变量。
现在我有了带有所有原始形式和标签的变量,并且知道实体的开始和结束位置。然而,当我试图以某种方式替换它时,我的知识 运行 很短,找不到任何类似的例子。
试试这个:
import spacy
nlp = spacy.load("en_core_web_sm")
s ="Apple is looking at buying U.K. startup for billion"
doc = nlp(s)
def replaceSubstring(s, replacement, position, length_of_replaced):
s = s[:position] + replacement + s[position+length_of_replaced:]
return(s)
for ent in reversed(doc.ents):
#print(ent.text, ent.start_char, ent.end_char, ent.label_)
replacement = "<{}>{}</{}>".format(ent.label_,ent.text, ent.label_)
position = ent.start_char
length_of_replaced = ent.end_char - ent.start_char
s = replaceSubstring(s, replacement, position, length_of_replaced)
print(s)
#<ORG>Apple</ORG> is looking at buying <GPE>U.K.</GPE> startup for <MONEY> billion</MONEY>