Python 如何将单词分类。(NLP)

Python 如何将单词分类。(NLP),python,text,nlp,nltk,Python,Text,Nlp,Nltk,我的目标是通过分析这两句话来返回食物和运动。你怎么能做到 我熟悉NLP和Wordnet。但是有没有更高级/实用/现代的技术 有没有什么东西可以自动将单词分类为“级别” 更重要的是,这个过程的技术术语是什么?做了一些,还有一些提到了超集。然而,我并没有看到任何技术细节,只有想法和讨论 也许这至少有助于你的研究…这个问题很难通过程序解决,但最近在这方面取得了很大进展 大多数自然语言处理都是从语法开始的(它可能是上下文无关的,也可能不是上下文无关的)。它是一组构造规则,说明更一般的事物是如何由更具体的

我的目标是通过分析这两句话来返回食物和运动。你怎么能做到

我熟悉NLP和Wordnet。但是有没有更高级/实用/现代的技术

有没有什么东西可以自动将单词分类为“级别”

更重要的是,这个过程的技术术语是什么?

做了一些,还有一些提到了超集。然而,我并没有看到任何技术细节,只有想法和讨论


也许这至少有助于你的研究…

这个问题很难通过程序解决,但最近在这方面取得了很大进展

大多数自然语言处理都是从语法开始的(它可能是上下文无关的,也可能不是上下文无关的)。它是一组构造规则,说明更一般的事物是如何由更具体的事物构成的

上下文无关语法示例:

I love to eat chicken.
Today I went running, swimming and played basketball.
这显然过于简单化了,但是制定一个完整的语法来定义所有的英语是一项艰巨的任务,而且大多数真实的系统只定义适用于某个问题领域的语法子集

一旦定义了一个语法(或使用只有谷歌这样的公司才知道的复杂算法学习),就会根据语法解析一个称为“范例”的字符串。用词性标记每个单词。非常复杂的语法不仅包括你在学校学过的词类,还包括诸如“网站”、“老年人姓名”和“成分”等类别

人类可以费力地将这些类别构建到语法中,或者使用类比建模或支持向量机等方法进行推断。在每一种情况下,“鸡”、“足球”、“烧烤”和“板球”等都将被定义为高维空间中的点,以及数百万个其他点,然后聚类算法将根据这些点相对于彼此的位置定义组。然后,可以尝试从示例文本中推断组的名称

这个谷歌搜索列出了NLP中使用的几种技术,你可以从中学到很多

编辑
为了解决这个问题,我们可以在网上搜索“”是一个”形式的句子,以建立项目类别关系数据库。然后解析上面的字符串,并在数据库中查找已知项的单词

您提出的问题是一个称为主题文本分类的整个研究领域。下面是对技术的一个很好的概述。最简单的技术之一(虽然不一定表现最好)是在每个类别中有大量(数百)个句子示例,然后在这些示例句子上训练一个朴素的贝叶斯分类器。NLTK在模块
NLTK.classify.naivebayes

中包含一个朴素贝叶斯分类器。您可以查看FBK人员提供的WordNet域资源。它是WordNet的扩展,用于文本分类和词义消歧。它允许不同程度的粒度

将其应用到任务中的一种可能的方法可能是从句子中提取NP块,获取它们的首词,并从中获取WordNet域中的类别。

使用Python和机器学习解决了这个问题

  • 有一个文本数据集
  • 应用Tf idf矢量化。 文档中出现的术语的权重只是成比例的
    到术语频率。(卢恩假设1957) 一个术语的特异性可以量化为 发生此错误的文档数
  • 向量空间模型
  • 多项式自然贝叶斯分类
  • 更详细的过程如下:

    我输入了我妻子床头柜上的项目,它提出了“恐怖主义”为什么是“食物”而不是“家禽”?你能告诉我们你尝试过并取得成功的方法的最新情况吗?我目前正在做这方面的高级设计项目,并且发现SVM的效果明显优于Bayes。我以为你想知道。原因是,随着训练集的增加,特征(单词)的数量也会增加,有些单词可能只会被提及一两次。当特征太多时,贝叶斯精度会降低。
    Sentence ::= NounPhrase VerbPhrase
    NounPhrase ::= ["The"] [Adjective] Noun
    Adjective ::= "big" | "small" | "red" | "green"
    Noun ::= "cat" | "man" | "house"
    VerbPhrase ::= "fell over"