是否有任何知名或成功的算法用于从句子问题中的单词中获取主题和/或句子(问题)的焦点?
如果没有,我将如何获得问题的主题/焦点。似乎问题的主题/焦点通常是名词或名词短语。
所以我要做的第一件事是通过Part Of Speech标记问题来确定名词。但是,我怎么知道我是否应该只得到它前面的名词或名词和形容词,或它之前的名词和副词,或者名词和动词?
例如:
In'那只快速的棕色狐狸跳过了懒狗“,得到了'快速的棕色狐狸','跳跃'和'懒狗'。
In'什么是日本人口,得到'人口'和'日本'
In'什么颜色的牛奶'得到'颜色'和'牛奶'
In'山的高度是多少?珠穆朗玛峰'得到'公吨。 Everst'和'高度'。
写这些时,我想最简单的方法是删除停用词。
答案 0 :(得分:4)
我认为首先问题是语言依赖。
其次我认为如果你有一套单词,你可以检查他们在语言中的受欢迎程度/频率; F.E.单词“the”经常出现“euphoric”这个词=>欣快有更多机会成为一个合适的关键词。
然而,拼写的重要性至关重要。怎么处理这个?一个想法是使用Levenshtein之类的距离算法来解决经常不会出现的问题(或者使用单词进行谷歌搜索并检查是否得到结果或“你是不是意味着” - 通知)
有些语言虽然比其他语言更有条理。在英语中找到名词,你可以首先用“a / an word”检查,然后用“s”结尾的单词找到可能的名词候选者。然后与字典进行比较。
对于形容词,您可以假设可能的形容词将位于名词之前。然后只需将可能的形容词与字典进行比较。
然后你当然可以保留一个永远不允许作为关键词的黑名单。
最好的解决方案可能是拥有一个自学习神经系统,但我不太熟悉那些提出任何建议
答案 1 :(得分:3)
这可以被认为是一个解析问题,我个人觉得stanford nlp工具非常有效。
Here是stanford解析器演示的链接
例如,快速的棕色狐狸跳过懒狗 你得到的输出是
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(名词短语) - 快速的棕色狐狸和懒狗。
我希望这有帮助!