gpt4 book ai didi

java - 删除 Java 中的停用词 --- 需要帮助

转载 作者:行者123 更新时间:2023-12-02 08:12:26 24 4
gpt4 key购买 nike

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

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

例如:如果停用词文件包含“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();

}

最佳答案

只需将最后一行更改为:

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

关于java - 删除 Java 中的停用词 --- 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com