python - 如何从给定句子中删除关键字
问题描述
如何从短语中删除关键字?
例如,
莱昂内尔·安德烈斯·梅西(Lionel Andrés Messi)是一名阿根廷职业足球运动员,司职前锋,同时担任西班牙巴塞罗那俱乐部和阿根廷国家队的队长。
如何从这句话中删除关键字(人名除外),例如“美国人”、“足球运动员”、“巴塞罗那”等等。
我意识到关键字必须是名词,并且我遇到了一个名为 NLTK 的库,也许这可以帮助我实现我想要实现的目标。
函数示例:
remove(sentence, word_to_not_remove)
>>> sentence = 'Lionel Andrés Messi is an Argentine professional footballer who plays as a forward and captains both Spanish club Barcelona and the Argentina national team.'
>>> remove(sentence, 'Lionel Andrés Messi')
footballer
解决方案
我认为您需要的是 NER(命名实体识别)。
作为第一步,您可以查看 Spacy [ https://explosion.ai/demos/displacy-ent ]
import spacy
text = "Lionel Andrés Messi is an Argentine professional footballer who plays as a forward and captains both Spanish club Barcelona and the Argentina national team."
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)
for ent in doc.ents:
print(ent.text, ent.start_char, ent.end_char, ent.label_)
Andrés Messi 7 19 PERSON
Argentine 26 35 NORP
Spanish 101 108 NORP
Barcelona 114 123 GPE
Argentina 132 141 GPE
PS:如果您需要特定的实体提取,您可能需要针对您的特定用例对其进行训练
更多文档:https ://spacy.io/usage/linguistic-features#named-entities
推荐阅读
- c++ - 错误:未定义符号:gzclose opencv emscripten
- python-3.x - 无法使用 tkinter 在列表框中打印数组元素
- bash - 比较两个用逗号分隔的列表,找出每个列表中的共同元素和不同元素
- python - 如何在 Python 中使用海象运算符执行赋值解构
- java - 限制方法参数值
- mysql - 查询 SQL - Sakila BD
- kotlin - 为什么 myPhone.something1.something() 上有红线?-东西1-
- c# - 试图用 C# 制作一个天气程序,但除了 API 中的国家代码之外,它不会带回任何东西
- python - 在简单回归模型中使用预测函数时出错(形状未对齐)
- python - Python - 如何在使用泛型类型时访问其他类方法?