2014-07-16 16 views
-3

有沒有辦法在停用詞(例如,''''''等)使用基於JAVA的文檔分類器(如OpenNLP)等。或者如果您自己(使用JAVA)做什麼可能是最有效的方法(假定字符串比較效率低下)。另外,鑑於每個文件本身並不那麼大,即平均大約100個字,但假定文件數量很大。什麼是使用Java從文本中刪除停用詞(例如,等)的有效方式

E.g., 
// Populate the stop words to a list 
List<String> stopWordsList = ArrayList<>(); 

// Iterate through a list of documents 
String currentDoc = getCurrentDoc(); 

String[] wordsArray = currentDoc.split(" ");  

for (String word : wordsArray) { 

     if (stopWordsList.contains(word)){ 
      // Drop it 
     } 
    } 

回答

-2

無需拆分,只需用一個空字符串

String currentDoc = getCurrentDoc(); 
currentDoc = currentDoc.replace(stringToReplace,""); 

替換目標字符串或使用replaceAll用正則表達式去,如果你有多個單詞來替換。

+0

恩,不,這不是一個好主意。 「a」是一個停用詞。簡單地做一個替換就會把「apple」變成「pple」,這顯然不是你想要的。 – dhg

0

你的技術很好。但是,您應該將stopWordsList設置爲Set,而不是List,以便您可以在常量時間內查看事件,而不是線性時間。換句話說,你不需要查看整個stopWordsList來查看word是否在那裏;你想看看它是否在集合中。

-1

你可以試試下面的代碼:

String sentence = "This is a sample sentence for testing stop word deletion"; 

    String pattern = " a | the | for | is "; 
    sentence = sentence.replaceAll(pattern, " "); 

結果:該樣品句子測試停止詞刪除

該模式包含了所有管道分離停止的話,說,模式可能包含其中的任何一個。請記住在停用詞的周圍留出空格,以便將它們區分爲精確的單詞。如果不是空格,即使在單詞中也會替換所有出現的停用詞的字符組合。

+0

停用詞可以是大寫/小寫,如果停用詞不包含在兩個空格之間,則該模式不起作用,如果句子以停用詞開始或結尾,或者後跟逗號等... – cheseaux

+0

注意到。但是上面提到的大部分可以用適當的正則表達式模式或者一系列正則表達式來解決。 – maheeka

相關問題