【问题标题】:How to remove stop words in java?如何删除java中的停用词?
【发布时间】:2012-09-10 06:20:01
【问题描述】:

我想删除 java 中的停用词。

所以,我从文本文件中读取停用词。

并存储集

Set<String> stopWords = new LinkedHashSet<String>();
BufferedReader br = new BufferedReader(new FileReader("stopwords.txt"));
        String words = null;
        while( (words = br.readLine()) != null) {
            stopWords.add(words.trim());
            }
        br.close();

而且,我读了另一个文本文件。

所以,我想删除文本文件中的重复字符串。

我该怎么办?

【问题讨论】:

    标签: java stop-words


    【解决方案1】:

    您应该尝试使用StringTokenizer

    【讨论】:

    • 如何使用StringTokenizer删除重复项??
    【解决方案2】:

    使用ArrayList 可能更容易。

    public ArrayList removeDuplicates(ArrayList source){
        ArrayList<String> newList = new ArrayList<String>();
        for (int i=0; i<source.size(); i++){
            String s = source.get(i);
            if (!newList.contains(s)){
                newList.add(s);
            }
        }
        return newList;
    }
    

    希望这会有所帮助。

    【讨论】:

    • 不完全是我不认为的问题,但它帮助了我,所以谢谢
    【解决方案3】:

    如果您只是想从文件中的单词中删除特定的单词集,您可以随心所欲地进行操作。但是,如果您正在处理涉及自然语言处理的问题,则应该使用库。

    例如,使用Lucene 进行标记化一开始看起来会更复杂,但它会处理您可能会忽略的无数复杂情况,并且如果您改变对特定停用词的想法,您将拥有很大的灵活性。标记化,是否关心大小写等。

    【讨论】:

      【解决方案4】:

      您想从文件中删除重复的单词,下面是相同的高级逻辑。

      • 读取文件
      • 循环遍历文件内容(即一次一行)
        • 根据空格为该行添加字符串标记器
        • 将每个令牌添加到您的集合中。这将确保每个单词只有一个条目。
        • 关闭文件

      现在你已经设置了包含所有唯一单词的文件。

      【讨论】:

        【解决方案5】:

        使用 set 作为停用词:

        Set<String> stopWords = new LinkedHashSet<String>();
                BufferedReader SW= new BufferedReader(new FileReader("StopWord.txt"));
                for(String line;(line = SW.readLine()) != null;)
                   stopWords.add(line.trim());
                SW.close();
        

        和 ArrayList 用于输入 txt_file

        BufferedReader br = new BufferedReader(new FileReader(txt_file.txt));
        //make your arraylist here
        
        // function deletStopWord() for remove all stopword in your "stopword.txt"
        public ArrayList<String> deletStopWord(Set stopWords,ArrayList arraylist){
                System.out.println(stopWords.contains("?"));
                ArrayList<String> NewList = new ArrayList<String>();
                int i=3;
                while(i < arraylist.size() ){
                    if(!stopWords.contains(arraylist.get(i))){
                        NewList.add((String) arraylist.get(i));
                    }
                    i++;        
                    }
                System.out.println(NewList);
                return NewList;
            }
        
          arraylist=deletStopWord(stopWords,arraylist);
        

        【讨论】:

          猜你喜欢
          • 2011-03-12
          • 2016-05-21
          • 1970-01-01
          • 2010-12-12
          • 1970-01-01
          • 2018-05-26
          • 2014-06-06
          • 2015-02-25
          • 1970-01-01
          相关资源
          最近更新 更多