如何在java中查找文档中短语(多标记字符串)的频率?

如何在java中查找文档中短语(多标记字符串)的频率?,java,frequency,phrase,Java,Frequency,Phrase,我想查找文档中多标记字符串或短语的频率。这不是我所寻找的单词/单个术语的频率,它总是多个术语,术语的数量是动态的 例如:在文档中搜索“与朋友交谈”的频率 任何帮助/指示都将不胜感激 谢谢 Debjani您可以使用缓冲读取器逐行读取文档,然后使用split函数获取单词/标记的频率 int count=0; while ((strLine = br.readLine()) != null) { count+ = (strLine.split("words with friends").

我想查找文档中多标记字符串或短语的频率。这不是我所寻找的单词/单个术语的频率,它总是多个术语,术语的数量是动态的

例如:在文档中搜索“与朋友交谈”的频率

任何帮助/指示都将不胜感激

谢谢
Debjani

您可以使用缓冲读取器逐行读取文档,然后使用split函数获取单词/标记的频率

int count=0;
while ((strLine = br.readLine()) != null)   {
     count+ = (strLine.split("words with friends").length-1);     
}
return count;
编辑: 如果要执行不区分大小写的搜索,则可以使用

Pattern myPattern = Pattern.compile("words with friends", Pattern.CASE_INSENSITIVE);
int count=0;
while ((strLine = br.readLine()) != null)   {
     count+ = (myPattern.split(strLine).length-1);    
}
return count;

您可以使用缓冲读取器逐行读取文档,然后使用split函数获取word/token的频率

int count=0;
while ((strLine = br.readLine()) != null)   {
     count+ = (strLine.split("words with friends").length-1);     
}
return count;
编辑: 如果要执行不区分大小写的搜索,则可以使用

Pattern myPattern = Pattern.compile("words with friends", Pattern.CASE_INSENSITIVE);
int count=0;
while ((strLine = br.readLine()) != null)   {
     count+ = (myPattern.split(strLine).length-1);    
}
return count;

为什么不使用正则表达式呢?Regex针对这类任务进行了优化


为什么不使用正则表达式?Regex针对这类任务进行了优化


你是说将有多个短语可供搜索,你想知道每个短语的频率吗?你是说将有多个短语可供搜索,你想知道每个短语的频率吗?是的,这就是为什么要将整个文档读入
字符串中,然后
拆分()
ed.@stivlo,但这意味着在between@Ankur我认为将其视为精确字符串上的非常严格的匹配,而不仅仅是在文档中查找特定的单词序列,这可能是一个错误。您可能还需要考虑案例——《与朋友的话》是否可以与问题中的《与朋友的话》示例相匹配?@Anthony感谢您指出这一点,我已经更新了我的answer@Ankur:我将文档内容作为字符串获取,在这种情况下,我如何使用您的方法?是的,我希望它不区分大小写。是的,这就是为什么要将整个文档读入
字符串,然后
split()
ed.@stivlo,但这意味着在between@Ankur我认为将其视为精确字符串上非常严格的匹配可能是错误的,而不仅仅是在文档中查找特定的单词序列。您可能还需要考虑案例——《与朋友的话》是否可以与问题中的《与朋友的话》示例相匹配?@Anthony感谢您指出这一点,我已经更新了我的answer@Ankur:我将文档内容作为字符串获取,在这种情况下,我如何使用您的方法?是的,我希望它不区分大小写。