【问题标题】:Remove stop words in Java --- Help needed删除 Java 中的停用词 --- 需要帮助
【发布时间】:2011-08-23 06:35:06
【问题描述】:

我正在使用一种方法来删除文件中定义的停用词,这将从我传递给此方法的查询字符串中删除这些词...代码工作正常

现在我需要做的是......如果查询字符串只包含那些停用词,那么它不应该被撕掉......

eg : 如果停用词文件有 "is" "was" "and"

如果查询是“我是学生”,那么输出应该是“我是学生”

但如果查询是“and is”,现在我需要输出与“and is”相同的输出。

下面是我写的去除停用词的方法。

public static String removeStopWords(String  query) throws UnsupportedEncodingException
    {
      String []queryTerms = query.split("&");
      String queryString="";
      StringBuffer sb =new StringBuffer();
      for (int i=0;i<queryTerms.length;i++){
            if(queryTerms[i].startsWith("q=") && !queryTerms[i].startsWith("q.orig")){
                queryString = queryTerms[i].replaceAll("q=","").trim().replace("+"," ").replaceAll("\\s+"," ").trim();
                }

        }
      if(!queryString.equalsIgnoreCase("")) {
      String [] tokens=queryString.split("\\s+");
      List lStopWords=StopWordDataLoad.getlQueryStringStopword();
      List<String> lTokens=new ArrayList<String>();
      boolean noStopWord=false;
      for(String s: tokens)
        if(!lStopWords.contains(s)) {
              if(sb.length()==0) sb.append(s);
                  else sb.append(" ").append(s);
          } else noStopWord=true;

       queryString=sb.toString().replaceAll("\\s+", " ");
       if(queryString.equalsIgnoreCase("") || noStopWord ==false) return query;
      }
      else return query;


      String fque="";
      String finQue = "";
      ArrayList<String> list = new ArrayList<String>();
      for (int i=0;i<queryTerms.length;i++){
          if(queryTerms[i].startsWith("q=") && !queryTerms[i].startsWith("q.orig")){
              fque = "q="+URLEncoder.encode(queryString,PropertyLoader.getHttpEncoding());
              list.add(fque);

          } else if (!queryTerms[i].equalsIgnoreCase("")) list.add(queryTerms[i]);
      }
      ListIterator<String> iter = list.listIterator();
        while(iter.hasNext()){
            String str = iter.next();
            finQue=finQue+"&"+str;
        }


      return finQue.trim();

    }

【问题讨论】:

    标签: java file-io query-string stop-words


    【解决方案1】:

    只要把最后一行改成这样:

    String result = finQue.trim();
    if (result.equals("")) {
        return query;
    } else {
        return result;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多