【问题标题】:algorithm to get topic / focus of sentence out of words in sentence从句子中的单词中获取句子的主题/焦点的算法
【发布时间】:2014-06-05 23:59:03
【问题描述】:

是否有任何众所周知或成功的算法可以从句子问题中的单词中获取句子(问题)的主题和/或焦点?

如果不是,我将如何获得问题的主题/焦点。似乎问题的主题/焦点通常是名词或名词短语。

所以我要做的第一件事是通过词性标记问题来确定名词。但是我怎么知道我应该只得到名词或名词和它前面的形容词,还是名词和它前面的副词,还是名词和动词?

例如:

在'd did the quick brown fox jump over the lazy dog'中,得到' quick brown fox'、' jump '和'lazy dog'。

在'日本的人口是多少'中,得到'人口'和'日本'

在'牛奶是什么颜色'中得到'颜色'和'牛奶'

在'珠穆朗玛峰的高度是多少'得到'珠穆朗玛峰'和'高度'。

在写这些时,我想最简单的方法是删除停用词。

【问题讨论】:

  • 你能举一个你想要的例子吗?
  • 您知道,自然语言处理本身并不是由算法完成的。围绕这个主题有很多研究。我不认为你会通过一个关于 SO 的问题来学习它。
  • @RobNeuhaus 更新了问题。
  • @FilipeGonçalves 是的,我知道。但是 NLP 中的某些方法非常成功地实现了某些目标。

标签: algorithm nlp text-mining


【解决方案1】:

我认为首先问题与语言有关。

其次,我认为如果你有一组单词,你可以检查它们在语言中的流行度/频率; f.e. “the”这个词出现的频率要高于“euphoric”这个词=> euphoric 更有可能成为一个合适的关键字。

在这里,拼写的重要性是至关重要的。如何处理?一种想法是对不经常出现的单词使用距离算法,例如 Levenshtein(或者使用该单词进行谷歌搜索并检查您是否得到结果或“你是不是意思”通知)

有些语言虽然比其他语言更结构化。在英语中查找名词时,您可以先对“a/an word”进行检查,然后对以“s”结尾的单词进行检查,以查找可能的名词候选者。然后与字典进行比较。

对于形容词,您也许可以假设可能的形容词将位于名词之前。然后只需将可能的形容词与字典进行比较。

那么你当然可以保留一个不允许作为关键字的词的黑名单。

最好的解决方案可能是拥有一个自学习的神经系统,但我对那些不太熟悉,无法给出任何建议

【讨论】:

  • 谢谢,这为我解决了问题。现在来学习如何制作一个自学习的神经系统。
  • 没问题。希望对您有帮助!名词和形容词的识别仍然需要详细说明:)
【解决方案2】:

这可以被认为是一个解析问题,我个人觉得stanford nlp 工具非常有效。

Here 是斯坦福解析器演示的链接

例如,敏捷的棕色狐狸是否跳过了懒惰的狗? 你得到的输出是

did/VBD
the/DT
quick/JJ
brown/JJ
fox/NN
jump/VB
over/RP
the/DT
lazy/JJ
dog/NN

从输出中,您可以编写一个提取器来提取名词(如果需要的话,形容词和副词),从而从句子中获取主题。

此外,解析树看起来像

(ROOT
  (SINV (VBD did)
    (NP (DT the) (JJ quick) (JJ brown) (NN fox))
    (VP (VB jump)
      (PRT (RP over))
      (NP (DT the) (JJ lazy) (NN dog)))))

如果您仔细查看解析树,您所期望的输出都是 NP(名词短语)- quick brown fox 和 lazy dog 。

我希望这会有所帮助!

【讨论】:

  • 是的,非常!你能给我解释一下解析树以及如何做提取器吗?我知道如何 PoS 标记单词,但是如何在代码中实现解析树提取?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
相关资源
最近更新 更多