有没有可以使用Python从句子中删除专有名词的软件包?
我知道一些像NLTK,Stanford和Text Blob这样的程序包可以完成工作(删除名称),但是它们也删除了很多以大写字母开头但不是专有名词的单词。
另外,我无法使用名称字典,因为它将非常庞大,并且随着数据不断在数据库中填充而将继续扩展。
如果您只想删除专有名词中的单个单词,则可以使用nltk并标记有问题的句子,然后删除所有带有专有名词标签的单词。
>>> import nltk
>>> nltk.tag.pos_tag("I am named John Doe".split())
[('I', 'PRP'), ('am', 'VBP'), ('named', 'VBN'), ('John', 'NNP'), ('Doe', 'NNP')]
Run Code Online (Sandbox Code Playgroud)
默认标记器使用Penn Treebank POS标记集,该标记集只有两个专有名词标记:NNP和NNPS
因此,您可以执行以下操作:
>>> sentence = "I am named John Doe"
>>> tagged_sentence = nltk.tag.pos_tag(sentence.split())
>>> edited_sentence = [word for word,tag in tagged_sentence if tag != 'NNP' and tag != 'NNPS']
>>> print(' '.join(edited_sentence))
I am named
Run Code Online (Sandbox Code Playgroud)
现在,作为警告,POS标记不是100%准确,可能会误标记一些含糊的单词。同样,您将不会以这种方式捕获命名实体,因为它们本质上是多字的。
| 归档时间: |
|
| 查看次数: |
4238 次 |
| 最近记录: |