我试图从文档中删除被spacy视为实体的单词,因此基本上从字符串示例中删除了“瑞典”和“诺基亚”。我找不到解决实体存储为跨度的问题的方法。因此,当将它们与spacy文档中的单个令牌进行比较时,会提示错误。
在随后的步骤中,该过程应该是应用于存储在熊猫数据框中的多个文本文档的功能。
我将不胜感激,因为它是我第一次在这里提出任何有关如何更好地发布问题的帮助和建议。
lastOccurences
它会产生以下错误:
TypeError:参数“ other”具有错误的类型(预期为spacy.tokens.token.Token,获得了spacy.tokens.span.Span)
答案 0 :(得分:1)
这不会处理涵盖多个令牌的实体。
import spacy
nlp = spacy.load('en_core_web_sm')
text_data = 'New York is in USA'
document = nlp(text_data)
text_no_namedentities = []
ents = [e.text for e in document.ents]
for item in document:
if item.text in ents:
pass
else:
text_no_namedentities.append(item.text)
print(" ".join(text_no_namedentities))
输出
“纽约进来了”
此处USA
已正确删除,但无法消除New York
解决方案
import spacy
nlp = spacy.load('en_core_web_sm')
text_data = 'New York is in USA'
document = nlp(text_data)
print(" ".join([ent.text for ent in document if not ent.ent_type_]))
输出
'在'
答案 1 :(得分:1)
您可以使用实体属性 start_char 和 end_char 将实体替换为空字符串。
julia> a = [1 3; 3 4]
2×2 Matrix{Int64}:
1 3
3 4
julia> b = copy(a); b[1,1] = 100
100
julia> a
2×2 Matrix{Int64}:
1 3
3 4
答案 2 :(得分:0)
这将为您提供所需的结果。回顾Named Entity Recognition应该可以帮助您继续前进。
import spacy
nlp = spacy.load('en_core_web_sm')
text_data = 'This is a text document that speaks about entities like Sweden and Nokia'
document = nlp(text_data)
text_no_namedentities = []
ents = [e.text for e in document.ents]
for item in document:
if item.text in ents:
pass
else:
text_no_namedentities.append(item.text)
print(" ".join(text_no_namedentities))
输出:
This is a text document that speaks about entities like and