Java 将短词转换为原词
我使用了一些单词计数算法,仔细一看,我感到奇怪,因为我在文本中得到的单词比原来的要少,因为它们可以算作一个单词,例如“it's”。因此,我试图找到一个解决方案,但没有成功,所以我问自己,他们是否存在任何东西来将“it's”这样的“短词”转换为他们的“基本词”,说“it's” 基本上,您需要提供一个数据结构,将缩写词映射到相应的长版本。但是,这并不像听起来那么简单,例如,您不想将“客户的汽车”转换为“客户就是汽车”Java 将短词转换为原词,java,text,text-to-speech,text-analysis,text-recognition,Java,Text,Text To Speech,Text Analysis,Text Recognition,我使用了一些单词计数算法,仔细一看,我感到奇怪,因为我在文本中得到的单词比原来的要少,因为它们可以算作一个单词,例如“it's”。因此,我试图找到一个解决方案,但没有成功,所以我问自己,他们是否存在任何东西来将“it's”这样的“短词”转换为他们的“基本词”,说“it's” 基本上,您需要提供一个数据结构,将缩写词映射到相应的长版本。但是,这并不像听起来那么简单,例如,您不想将“客户的汽车”转换为“客户就是汽车” 要处理这些情况,您可能需要一种启发式方法,能够更深入地理解您正在处理的语言及其包含
要处理这些情况,您可能需要一种启发式方法,能够更深入地理解您正在处理的语言及其包含的语法规则。我只是为了迎接挑战而从头构建了这个方法。这似乎对我有帮助。让我知道它是如何为你工作的
public static void main(String[] args) {
String s = "it's such a lovely day! it's really amazing!";
System.out.println(convertText(s));
//output: it is such a lovely day! it is really amazing!
}
public static String convertText(String text) {
String noContraction = null;
String replaced = null;
String[] words = text.split(' ');
for (String word : words) {
if (word.contains("'s")) {
String replaceAposterphe = word.replace("'", "$");
String[] splitWord = replaceAposterphe.split('$');
noContraction = splitWord[0] + " is";
replaced = text.replace(word, noContraction);
}
}
return replaced;
}
我在C#中实现了这一点,并尝试将其转换为Java。如果您看到任何语法错误,请指出。您的代码在哪里?你使用的算法是什么?你提到的例子就是为什么我问自己这样一个工具是否已经存在的原因;)拼写检查API可能会提供这样的功能,但我想他们只会在内部使用它们。您是否检查了开源工具(如OpenOffice)是如何实现单词计数的?谢谢,我将检查APII。我尝试了拼写检查器api,在这里找到:不管他们怎么看,它都是正确的;)不幸的是,拼写检查器不能用于此目的,但该算法存在相同的问题,例如,将“客户端是汽车”转换为“客户端是汽车”。我想你的意思是说“客户端的汽车”为“客户端是汽车”。类似的,如用户1438038所述,我们需要一种算法,这种算法的构建方式能够知道所有格和复数之间的区别。我相信这是可以做到的,但那将是一个疯狂的算法。