Python文本处理:从单词中识别名词

3
我有一个单词列表,想只保留名词。
这不是使用nltk从文本文件中提取所有名词的重复内容。
在链接的问题中,一段文本被处理。已接受的答案提出了一个标记器。我知道标记文本的不同选项(nlkt、textblob、spacy),但我不能使用它们,因为我的数据不包含句子。我只有一个独立单词的列表:
would
research
part
technologies
size
articles
analyzes
line

nltk有很多语料库。我找到了一个名为verbnet的动词全面列表。但是到目前为止,我没有看到与名词类似的东西。是否有像字典一样的东西,我可以查找一个单词是名词、动词、形容词等?

这可能可以通过一些在线服务来完成。例如,Microsoft翻译在其响应中返回了大量信息:https://learn.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-dictionary-lookup?tabs=curl 但这是付费服务。我更喜欢使用Python包。

关于单词的歧义性:理想情况下,我希望有一个可以告诉我一个单词所有功能的字典。例如,“fish”既是名词又是动词。“eat”只是动词,“dog”只是名词。我知道这不是一门精确的科学。一个可行的解决方案将简单地删除所有不能是名词的单词。


2
什么是名词?什么是动词?怎样区分它们?这是否与语言有关?Google可以作为动词吗?Google是名词吗? 英语中的虚词可能有固定的词性,但非虚词在大多数情况下没有上下文是模糊的。 - alvas
更新的问题 - lhk
4个回答

3

尝试使用WordNet了吗?

from nltk.corpus import wordnet
words = ["would","research","part","technologies","size","articles","analyzes","line"]
for w in words:
    syns = wordnet.synsets(w)
    print(w, syns[0].lexname().split('.')[0]) if syns else (w, None)

你应该看到:
('would', None)
('research', u'noun')
('part', u'noun')
('technologies', u'noun')
('size', u'noun')
('articles', u'noun')
('analyzes', u'verb')
('line', u'noun')

2
你可以对单个片段运行POS标记器,但准确性会降低,我想这已经是一个既定的事实了。
理想情况下,找到一个POS标记器,可以为可能的句法消歧后处理管道中的每个可能读取显示出所有可能的读取。这基本上只是从词汇表中挑选出所有可能的读取(也许带有概率),然后让你从那里开始。

我已经尝试过了,效果出奇的好。Spacy真是太棒了 :) 不过,它并不是问题的答案(我正在寻找像传统词典一样的东西)。 - lhk

1
即使你使用字典,你仍然必须处理歧义。例如,相同的单词根据上下文可以是名词或动词,比如单词“research”。
大多数字典将有一个以上的“research”定义,例如: 作为名词的research 作为动词的research 这些单词的来源在哪里?您可以在它们出现的上下文中标记它们吗?

他们没有上下文,这是一个词汇表。当然,您对歧义是正确的,大多数动词也可以用作名词。捕捉得好,散步愉快,……我有兴趣扔掉任何明显不是名词的东西。“美丽的”,“学习”,“在……之上”,…… - lhk

0

正如@Triplee和@DavidBatista所指出的那样,仅凭一个单词本身很难确定它是名词还是动词,因为在大多数语言中,一个单词的句法取决于上下文。

单词只是意义的表达。因此,我想提出另一个可能符合您意思的建议 - 不要试图确定一个单词是名词还是动词,而是尝试确定一个概念是对象还是动作 - 这仍然存在歧义的问题,因为一个概念可以同时具有动作或对象形式。

但是,您可以坚持使用仅具有对象属性(例如TypeOf,HasAsPart,IsPartOf等)或既具有对象属性又具有动作属性(动作属性例如Subevents,Effects,Requires)的概念。

一个好的概念搜索工具是Conceptnet,它提供了一个WebApi,可以通过关键字在其网络中搜索概念(它基于维基百科和许多其他网站,并且对英语非常完整),是开放的,并且还指向其他语言的同义词(它们被标记为它们的常见POS - 您可以平均同义词的POS来尝试确定该单词是对象[类似名词]还是动作[类似动词])。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接