我一直在尽可能多地阅读 NLP 并在此处搜索,但没有找到任何似乎可以准确解决我正在尝试做的事情的内容。我是 NLP 的新手,之前只接触过一些小东西,到目前为止,我已经得到了我正在使用的 NLP 处理器,可以从文本中提取 POS。
我只是在处理一个小示例文档,然后使用一个“输入短语”,我基本上是在尝试为其找到匹配项。到目前为止我编写的代码基本上是这样做的:
- 获取输入短语和“searchee(正在搜索的文档)”并将它们分解为单个单词的列表,然后还获取每个单词的 POS。用户还输入了输入短语中的一个关键字(并且应该在正在搜索的文档中)
- 在两个List中查找用户输入的关键词,然后在每个文档中首先找到这个关键词,取前后一定数量的词(比如5个)。这些被放入数据集中进行处理,所以如果一篇文章有:
关键词:足球
“很多运动都很有趣,足球是一项很棒的运动,但也非常需要体力。” - 然后我的过程会将其截断为“很有趣,足球是”
我的目标是比较这些片段,例如“are fun, football is a”的相似性,就好像它们可能用于相似的上下文等。
我想知道是否有人可以就可用于此的模式、算法等向我指出正确的方向。上面的示例很简单,只是为了提供一个想法,但我打算制作如果我能找到合适的地方来了解更多相关信息,这会更加复杂。感谢您提供任何信息
最佳答案
看来你正在解决旧的 KWIC问题。这可以通过索引来完成,或者只是一个简单的 for
循环遍历文本中的单词:
for i = 0 to length(text):
if text[i] == word:
emit(text[i-2], text[i-1], text[i], text[i+1], text[i+2])
emit
可能意味着打印它们,将它们存储在哈希表中,等等。
关于algorithm - NLP,用于确定文本 block 是否为 "similar"的算法(已经匹配关键字后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8103730/