Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将单词识别为名词、动词或形容词_Python_Nlp_Wordnet_Word Sense Disambiguation - Fatal编程技术网

Python 将单词识别为名词、动词或形容词

Python 将单词识别为名词、动词或形容词,python,nlp,wordnet,word-sense-disambiguation,Python,Nlp,Wordnet,Word Sense Disambiguation,给定一个单词,比如“table”,我想确定它最常用的是什么,它最常用的用法是名词、动词还是形容词。我想用python来做这件事。除了wordnet还有别的吗?我不喜欢wordnet。或者,如果我使用wordnet,我将如何准确地使用它 如果你有一个不符合上下文的单词,并且想知道它最常用的用法,你可以查看其他人的频率表(例如),或者你可以自己统计:只需找到一个足够大的标记语料库,然后统计它的实例。如果你想使用免费的语料库,NLTK包括(100万字)。NLTK还提供了使用大型非自由语料库(如英国国家

给定一个单词,比如“table”,我想确定它最常用的是什么,它最常用的用法是名词、动词还是形容词。我想用python来做这件事。除了wordnet还有别的吗?我不喜欢wordnet。或者,如果我使用wordnet,我将如何准确地使用它

如果你有一个不符合上下文的单词,并且想知道它最常用的用法,你可以查看其他人的频率表(例如),或者你可以自己统计:只需找到一个足够大的标记语料库,然后统计它的实例。如果你想使用免费的语料库,NLTK包括(100万字)。NLTK还提供了使用大型非自由语料库(如英国国家语料库)的方法

import nltk


text = 'This is a table. We should table this offer. The table is in the center.'
text = nltk.word_tokenize(text)
result = nltk.pos_tag(text)
result = [i for i in result if i[0].lower() == 'table']

print(result) # [('table', 'JJ'), ('table', 'VB'), ('table', 'NN')]

你需要词性。Wordnet对单词的每个词义都有一个频率(例如,“table”)。但自2003年以来(据我记忆所及),这一数据从未更新过。更好的选择是下载Google n-grams并在该数据集上进行词性标记。您如何对5字ngrams进行词性标记?那个主意是没有先例的。但谷歌确实提供了第一个单词的POS分类,所以这将是一种获得广泛计数的方法。如果你有足够的磁盘空间,并且真的需要翻阅那么多的数据,那么如果这个词是断章取义的呢。仅仅是“表”这个词,以及它最常见的用法,无论是名词、动词等等。你所说的“断章取义”是什么意思?正是上下文使这一定义(词性)成为可能。任何名词都可以被逐字逐句。我的意思是,考虑到“表”这个词,这个词在现实世界中最常见的用法是什么——名词、动词、形容词等。@jontyrhodes你是说它在这个星球上作为一个整体最常见的用法?我不知道,你应该问问谷歌。
import nltk
from nltk.corpus import brown
table = nltk.FreqDist(t for w, t in brown.tagged_words() if w.lower() == 'table')
print(table.most_common())

[('NN', 147), ('NN-TL', 50), ('VB', 1)]