2016-11-24 66 views
3

我的一位朋友有一個想法,即製作一個逐個顯示單詞的速度閱讀程序(與當前存在的速度閱讀程序非常相似)。但是,該程序會過濾出對意義完全不必要的單詞(如果您想要瀏覽某些內容)。確定相似兩個句子的算法

我已經開始實施這個程序,但我不太確定算法是什麼來擺脫「不重要」的話應該是。

我的想法是解析句子(我目前使用的是斯坦福分析器),並基於該單詞對每個單詞的句子含義的重要性來分配權重,然後開始移除具有最低權重的單詞。我會繼續這樣做,檢查原始樹和新樹的「不同」。我將繼續刪除重量最低的單詞,直到兩棵樹太差(我將通過每個用戶經歷一次的「校準」過程來確定一些常數)。最後,我會遍歷縮短的句子的每個單詞,並嘗試用該單詞的更簡單或更短的同義詞替換它(同時仍然試圖保留值)。

同樣,對於「the」,「a」,「of」等非常常見的詞語,也會有特殊情況。

例如:

「比利簡說, '你要出去嗎?'」

將成爲:

「比利告訴簡氏想出去嗎?'」

這將基本上保留句子的所有含義,但顯着縮短了它。

這是一個算法的好主意,如果是這樣,我將如何分配權重,我應該使用什麼樹比較算法,並在同一個好地方插入同義詞(即在我嘗試之前完成刪除任何單詞)?

+0

你死心塌地從頭開始做這一切的還是你確定使用的庫如NLTK或gensim等? –

+0

我肯定會打開使用其他庫如nltk –

+0

有[this](http:// stackoverflow。com/questions/17022691/python-semantic-similarity-score-for-strings)和一個鏈接副本。 –

回答

1

分配權重是一個百萬美元的問題。作爲第一步,我會識別句子的部分(主語謂語從句等)和句子結構(簡單複合複合詞等),以找到具有最高權重的「錨點」單詞。這應該使其餘的任務更容易。

+0

「定位」單詞是否最接近句子結構樹根部的單詞? –

+0

這就是研究的地方。然而,直覺上,我會說在句子的每個部分都會有一個主要單詞,而句子的某些部分會比其他部分更重要 - 例如,主體的主要單詞不可能是省略。所以是的 - 如果你圍繞那些應該減少算法需要做的工作量構思你的樹。另外,我想早期確定上下文並不是一個壞主意,因爲根據上下文,相同的單詞將具有不同的權重。 – postoronnim

1

假設你正在使用的單詞嵌入作爲權重邏輯,因爲我想不出什麼更好的辦法來做到這一點,你可以轉換短語轉換成矢量並比較這些矢量。 以這種方式很好地處理低重量的詞,如a,an等。

本教程可以幫助你:Phrase2Vec In Practice