2016-04-12 30 views
2

我目前正在使用Python中的一個項目,該項目依賴於一個csv文件。 csv文件包含幾千個隨機語句,並且在某些語句之間有一些相似之處。我的代碼的目的是確定哪些句子是一種類型,並且指明相同的事情是明智的。在csv文件中將類似的句子字符串分組在一起

例如,引用的Gmail如所有句子:

Gmail login 
Gmail account login 
Gmail account register 

指代相同的上下文,但是可以是彼此在輸入文件中,嵌套無關句子參照不同的上下文中很遠。我的方法我一直使用至今是:

  1. 排序在一個句子中每個單詞的字母順序,併爲小寫,例如:

    帳戶Gmail登錄

  2. 使他們的原始索引文件中它自己的列,在csv文件中按字母順序排列句子,然後將它們加載到熊貓數據幀中。

  3. 通過數據框對話並相互比較句子。這是通過使用token_set_ratio方法來識別彼此匹配的詞語(等於== 100),將相似的詞彙組合在一起然後寫入文件。

  4. 當數據幀迭代完畢後,我們再次遍歷它,並將我們自己的列索引與輸入文件中對應的行匹配,以返回原始語句。

這種方法一直很有前途,但它遭受了糟糕的匹配和句子不是在同一組中結束的相同上下文。有沒有更好的方法可以做我想做的事情?

回答

2

有很多方法可以實現文檔相似性分析,來自文本分析/挖掘領域。

就你而言,你似乎有文檔(行)標準化的單詞。然後,您可以執行文檔比較,而不用通過Levenstein距離的三元相似性比較單詞。

基本上,使用inverted file來存儲條款,並執行cosine similarity in the vector model是一個簡單而有效的方法來檢測文件的相似性。

使用一些其他技術或distance/similarity scores可以改進結果。

編輯:一個python模塊,gensim,實現了向量空間模型,似乎是功能齊全。 NLTK是一個衆所周知的自然語言分析框架,併爲該類型的工作提供了大量的功能。

相關問題