【发布时间】:2017-04-08 21:08:47
【问题描述】:
我的一个朋友有一个想法,要制作一个逐字显示单词的速读程序(很像目前现有的速读程序)。但是,该程序会过滤掉对含义不完全必要的单词(如果您想略读某些内容)。
我已经开始实现这个程序,但我不太确定删除“不重要”单词的算法应该是什么。
我的想法是解析句子(我目前正在使用斯坦福解析器)并以某种方式根据该词对句子对每个词的意义的重要性来分配权重,然后开始删除权重最低的词。我将继续这样做,检查原始树和新树有多“不同”。我将继续删除权重最低的单词,直到两棵树相差太大(我将通过每个用户经历一次的“校准”过程确定一些常数)。最后,我将检查缩短句子的每个单词,并尝试用该单词的更简单或更短的同义词替换它(再次尝试保留值)。
同样,“the”、“a”和“of”等非常常见的词也会有特殊情况。
例如:
“比利对简说,‘你想出去吗?’”
会变成:
“比利告诉简‘想出去吗?’”
这将基本上保留句子的所有含义,但会大大缩短它。
这对算法来说是个好主意吗?如果是,我将如何分配权重,我应该使用什么树比较算法,以及在一个好地方插入同义词(即应该在我之前完成尝试删除任何字词)?
【问题讨论】:
-
您是一心想从头开始做这一切,还是可以使用 NLTK 或 gensim 等库?
-
我肯定愿意使用其他库,例如 nltk
-
有this 和一个链接的副本。
-
@PaulRooney tf-idf 和 gensim 在两个非常相似的句子上都能很好地工作吗?我原以为这些是为了确定 2 个不同结构的句子是否相似?
标签: python algorithm parsing tree nlp