Java 从字符串中提取每个单词并比较频率

Java 从字符串中提取每个单词并比较频率,java,string,Java,String,我有一个字符串str=“28catsdogsbuscatsdogshomebike”我必须从字符串中提取每个单词,并计算每个单词的频率。字符串可以有一个数字0,只要从文件中读取字典,在读取到某些字符后检查单词是否存在,并将其与字典匹配,或者在输入单词之间提供空格,就可以这样做 尝试使用资源 String[] words; try { FileReader file_reader = new FileReader("words.txt");

我有一个
字符串str=“28catsdogsbuscatsdogshomebike”我必须从字符串中提取每个单词,并计算每个单词的频率。字符串可以有一个数字
0,只要从文件中读取字典,在读取到某些字符后检查单词是否存在,并将其与字典匹配,或者在输入单词之间提供空格,就可以这样做

尝试使用资源

 String[] words;

 try
        {
            FileReader file_reader = new FileReader("words.txt");
            BufferedReader buffered_reader = new BufferedReader(file_reader);

            String word;
            while((word = buffered_reader.readLine()) != null)
            {
                words[i] = word;
                i++;
            }

            buffered_reader.close();
        }
使用此选项将形成的单词数组与可以使用字符作为迭代生成的字符串进行比较,直到得到有意义的单词,然后就可以对单词进行计数

       int testMeaningfulWords(String stringformed){ 
        if(words.contains(stringformed)){
          return 1;
        }
}
从字符串中逐字符读取

string s="";
for (int i=0; i < str.length(); i++)
{
      if(i==0)
      {
        s=str.charAt(i);
       }
     else{
       s=s+str.charAt(i);
       }
       int k=testMeaningfulWords(s);
       if(k==1)
       {
       s="";
        }
}
string s=”“;
对于(int i=0;i
如果您从文件中读取字典,以在读取到某些字符后检查单词是否存在,并将其与字典匹配,或在输入单词之间提供空格,则可以执行此操作

尝试使用资源

 String[] words;

 try
        {
            FileReader file_reader = new FileReader("words.txt");
            BufferedReader buffered_reader = new BufferedReader(file_reader);

            String word;
            while((word = buffered_reader.readLine()) != null)
            {
                words[i] = word;
                i++;
            }

            buffered_reader.close();
        }
使用此选项将形成的单词数组与可以使用字符作为迭代生成的字符串进行比较,直到得到有意义的单词,然后就可以对单词进行计数

       int testMeaningfulWords(String stringformed){ 
        if(words.contains(stringformed)){
          return 1;
        }
}
从字符串中逐字符读取

string s="";
for (int i=0; i < str.length(); i++)
{
      if(i==0)
      {
        s=str.charAt(i);
       }
     else{
       s=s+str.charAt(i);
       }
       int k=testMeaningfulWords(s);
       if(k==1)
       {
       s="";
        }
}
string s=”“;
对于(int i=0;i
因为字符串不包含
空格
,所以
单词的概念实际上不存在。您必须在内存模型中手动创建单词词典,例如
wordsDictionary
,这是示例

import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;

 public class Words {

/**
 * @param args
 */
public static void main(String[] args) {
    String str = "28catsdogsbuscatsdogshomebike";
    String str1 = "dogshomebike";
    extractWords(str);
    System.out.println("=========");
    extractWords(str1);
}

/**
 * @param str
 */
private static void extractWords(String str) {
    String wordsDictionary []= {"dog","cat","bus","home","bike"};
    Map<String,Integer> matchingStr = new HashMap<String ,Integer>();
    for (int i = 0; i < wordsDictionary.length; i++) {
        String string = wordsDictionary[i];
        int count = StringUtils.countMatches(str, string);
        matchingStr.put(string, count);
    }
    for (String string : matchingStr.keySet()) {
        System.out.println(string + "  frequency "+matchingStr.get(string));
    }

  }

 }
import java.util.HashMap;
导入java.util.Map;
导入org.apache.commons.lang.StringUtils;
公共类词汇{
/**
*@param args
*/
公共静态void main(字符串[]args){
String str=“28catsdogsbuscatsdogshomebike”;
字符串str1=“dogshomebike”;
关键词(str);
System.out.println(“================”);
提取字(str1);
}
/**
*@param str
*/
私有静态void提取字(字符串str){
字符串字典[]={“狗”、“猫”、“公共汽车”、“家”、“自行车”};
Map matchingStr=new HashMap();
for(int i=0;i
因为字符串不包含
空格
,所以
单词的概念实际上不存在。您必须在内存模型中手动创建单词词典,例如
wordsDictionary
,这是示例

import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;

 public class Words {

/**
 * @param args
 */
public static void main(String[] args) {
    String str = "28catsdogsbuscatsdogshomebike";
    String str1 = "dogshomebike";
    extractWords(str);
    System.out.println("=========");
    extractWords(str1);
}

/**
 * @param str
 */
private static void extractWords(String str) {
    String wordsDictionary []= {"dog","cat","bus","home","bike"};
    Map<String,Integer> matchingStr = new HashMap<String ,Integer>();
    for (int i = 0; i < wordsDictionary.length; i++) {
        String string = wordsDictionary[i];
        int count = StringUtils.countMatches(str, string);
        matchingStr.put(string, count);
    }
    for (String string : matchingStr.keySet()) {
        System.out.println(string + "  frequency "+matchingStr.get(string));
    }

  }

 }
import java.util.HashMap;
导入java.util.Map;
导入org.apache.commons.lang.StringUtils;
公共类词汇{
/**
*@param args
*/
公共静态void main(字符串[]args){
String str=“28catsdogsbuscatsdogshomebike”;
字符串str1=“dogshomebike”;
关键词(str);
System.out.println(“================”);
提取字(str1);
}
/**
*@param str
*/
私有静态void提取字(字符串str){
字符串字典[]={“狗”、“猫”、“公共汽车”、“家”、“自行车”};
Map matchingStr=new HashMap();
for(int i=0;i
由于字符串中不包含空格,因此被视为单词的内容会立即出现问题,因为我们甚至可能无法识别单词的开头和结尾。字符串
哑铃格式如何?这是两个词,
dumbbell
floormat
,还是四个词
dumb
floor
mat
?你如何区分“狗”和“家”和“狗屋”以及“家”和“自行车”和“家用自行车”?在提取28catsDogsBussatsDogsHomebike=28 catsdogs bus catsdogs homebike或28 cats dogs bus cats cats dogs homebike或其他内容后,可能会询问字符串的输出?@TimBiegeleisen可以像搜索引擎工作时一样尝试键入
dum
它给您的
dumb
,并且我们可以计算
dumb
等等,因为字符串是这样做的不包含空格什么被认为是一个单词?这里马上就有一个问题,因为我们甚至可能无法辨别单词的开始和结束位置。字符串
哑铃格式如何?这是两个词,
dumbbell
floormat
,还是四个词
dumb
floor
mat
?你如何区分“狗”和“家”和“狗屋”以及“家”和“自行车”和“家用自行车”?在提取28catsDogsBussatsDogshomebike=28 catsdogs bus catsdogs homebike或28 cats dogs bus cats cats dogs homebike或其他内容后,可以询问字符串的输出?@TimBiegeleisen可以像搜索引擎工作时一样尝试键入
dum
它给你的
,我们可以计算
等等否决票是不合理的。请在投否决票之前解释一下是怎么回事。投否决票的人是不合理的。请在投否决票之前解释一下是怎么回事