2017-03-08 87 views
1

有沒有某種算法或概念,可以幫助解決以下問題?字符串含義比較

說我有兩段文字,代碼段1和代碼段二。

片段1內容如下:

「狗嚇得不敢出門到風暴」

片段2如下:

「犬被嚇倒進入陰雨天氣「

有沒有一種方法可以比較使用某種算法的片段,或者某種字符串理論系統?我想知道在解決這個問題之前是否有任何種類的系統解決了這個問題。

更新: 好的,舉一個更具體的例子,說我想減少票務系統中的錯誤數量。我想做一些掃描,看看是否有任何相關或相似的門票。我想知道根據票證的主體來確定問題的最佳系統方式。 Levenshtein距離算法並不是特別有效,因爲它不會知道溼度和幹度之間的差異。

+0

此存儲庫對您的問題有一個詞嵌入方法:https://bitbucket.org/yunazzang/aiwiththebest_byor – Aaron

回答

3

有沒有辦法使用某種算法比較這些片段,或者某種形式的字符串理論系統?我想知道在解決這個問題之前是否有任何種類的系統解決了這個問題。

好了,這是NLP一個非常著名的問題,並且,你在比較兩個句子的semantics更精確。 也許你可以看看如gensimWordnet::Similarity等庫,它們提供了檢索語義相似的文檔的方法。

Here's another semantically similar SO question question.

1

一個不錯的選擇可能是串Levenshtein Distance兩者之間。 它是衡量從一個字符串到另一個字符串所需的操作次數。所以,距離越大,兩個弦的相似性就越小。

這種算法非常適合拼寫檢查或語音識別,因爲給定的字符串和期望的字符串通常只會有幾個字/字符的不同。

對於你的例子,Levenshtein距離是32(你可以試試這個calculator),這表明字符串不是非常相似(因爲字符串不比32的距離長)。

這個算法對於上下文敏感的比較並不好,但你的例子是一種極端的情況。很有可能會有更多的共同詞彙會導致更小的Levenshtein距離。您可以將此算法與其他一些方法結合使用(請參閱:What are some algorithms for comparing how similar two strings are?)以嘗試獲得更優化的比較。