是否存在一种算法来帮助检测英语句子的“主要主题”?

时间:2011-04-04 21:19:15

标签: algorithm nlp semantics lexical-analysis

我试图找出是否有一种可以检测句子“关键概念”的已知算法。

用例如下:

  1. 用户输入一个句子作为查询(鸡的味道像火鸡一样吗?)
  2. 我们的系统识别句子(鸡,火鸡)的概念
  3. 它会搜索我们的语料库内容
  4. 我们缺乏的领域是确定句子的核心“主题”究竟是什么。句子“鸡肉味道像火鸡”有一个主题“鸡”,因为用户询问鸡的味道。虽然“火鸡”是一个不太重要的帮助主题。

    所以...我试图找出是否有一种算法可以帮助我识别句子的主要话题...如果你知道任何问题,请告诉我!

12 个答案:

答案 0 :(得分:21)

我实际上就此做了一个研究项目并赢得了两场比赛,并且正在参加国内比赛。

该方法有两个步骤

    使用无上下文语法
  1. 解析句子
  2. 在生成的解析树中,找到所有仅属于类似Noun-Phrase的成分的名词
  3. 例如,“我吃馅饼”有2个名词:“我”和“馅饼”。查看解析树,“馅饼”在动词短语中,因此它不能成为主语。然而,“我”只是在NP类成分中。作为唯一的主题候选人,它是主题。在http://www.candlemind.com上查找此计划的早期副本。请注意,词汇仅限于基本单数词,并且没有动词变形,因此它具有“男人”而不是“男人”,具有“吃”而不是“吃”。另外,我使用的CFG是手工制作的限量版。我将很快更新这个程序。

    无论如何,此计划有限制。我的导师在其潮流状态中指出,它不能识别具有“真实”NP的主语句(语法实际上称为NP)。例如,“月亮平坦不再是一场辩论。”主题实际上是“月亮是扁平的”。但是,该计划将“月亮”视为主题。我很快就会解决这个问题。

    无论如何,对于大多数句子来说这已经足够了......

    我的研究论文也可以在那里找到。转到第11页阅读方法。

    希望这有帮助。

答案 1 :(得分:9)

你的大多数基本NLP解析技术都能够提取句子的基本方面 - 即,鸡和火鸡是NP,它们是由'和'形容词'等'联系在一起的。等等。或“概念”更难

诸如潜在语义分析之类的技术及其许多衍生物将这些信息转换为向量(有些方法在某些方面保留了词性之间的层次/关系),然后将它们与现有的,通常按概念预先分类的方法进行比较,矢量。请参阅http://en.wikipedia.org/wiki/Latent_semantic_analysis开始使用。

编辑以下是您可以使用的示例LSA应用程序,看看您是否可能希望进一步追求它。 http://lsi.research.telcordia.com/lsi/demos.html

答案 2 :(得分:3)

对于许多较长的句子,很难说出一个主题到底是什么,也可能不止一个。

获得近似ans的一种方法是

1.。)首先使用openNLP,stanford Parser或任何一个标记句子。 2.)然后从句子中删除所有停用词。 3.)拿起名词(正文,单数和复数)。

其他方式是

1。)任何解析器将句子放入短语。 2.)拿起所有的名词短语。 3.)删除小时候没有名词的名词短语。 4.)只保留形容词和名词,删除剩余名词短语中的所有单词。

这可能会给出约。猜测。

答案 3 :(得分:1)

“关键概念”在语言学中并不是一个定义明确的术语,但这可能是一个起点:parse句子,找到解析树中的主语或你得到的依赖结构。 (这并不总是有效;例如,“下雨了吗?”的主题是“它”,而关键概念可能是“下雨”。另外,“意大利面和烤宽面条是同一个东西”中的关键概念是什么? ?“)

这种问题(NLP +搜索)更适合用LSA等方法处理,但这是一个非常高级的主题。

答案 4 :(得分:1)

在最基本的层面上,英语问题通常采用<verb> <subject> ... ?<pronoun> <verb> <subject> ... ?的形式。这绝不是一个好的算法,特别是考虑到主题可能跨越多个单词,但根据您需要的解决方案的复杂程度,它可能是一个有用的起点。

如果您需要精确度,请忽略此答案。

答案 5 :(得分:1)

如果你愿意花钱,http://www.connexor.com/应该可以为包括英语在内的各种语言进行这种语义分析。我从未直接使用过他们的产品,因此无法评论其运作情况。

答案 6 :(得分:1)

本月有一篇关于在麻省理工学院计算语言学期刊中解析名词短语的文章:http://www.mitpressjournals.org/doi/pdf/10.1162/COLI_a_00076

答案 7 :(得分:1)

复合句或复句可能有一个以上的句子关键概念。

您可以使用stanfordNLP或MaltParser来提供句子的依赖结构。它还提供了词性标注,包括主语,动词,宾语等。

我认为大多数时候对象都是句子的关键概念。

答案 8 :(得分:1)

您应该查看Google的Cloud Natural Language API。这是他们的NLP服务。

https://cloud.google.com/natural-language/

答案 9 :(得分:0)

简单的解决方案是使用部分语言标记器(例如来自Python的NLTK库)标记您的句子,然后找到与某些预定义的部分语言模式匹配,其中明确的主要主题是句子

答案 10 :(得分:0)

一个选择是将这样的事情作为第一步:

http://www.abisource.com/projects/link-grammar/

但是,如何从这些链接中获取主题本身就是另一个问题。但是当Abiword试图检测语法问题时,你可能能够使用它来确定主题。

答案 11 :(得分:-3)

通过“主要主题”,您指的是句子的主题

可以通过自然语言处理理解句子来识别主语。

这个问题的答案与How to determine subject, object and other words?的答案相同 - 这是目前尚未解决的问题。