我有一个文本,它来自多语言字符串,如下所示
This is a multi-lingual string.私は別の言語にそれを分割する必要がありますPlease help me. This is a multi-lingual string.私は別の言語にそれを分割する必要がありますPlease help me我不得不分成不同的语言(在这个例子中,英语和日语)。
即,我需要如下所示的字符串,
1. This is a multi-lingual string.
2. 私は別の言語にそれを分割する必要があります
3. Please help me. This is a multi-lingual string.
4. 私は別の言語にそれを分割する必要があります
5. Please help me请帮帮忙。提前谢谢。
发布于 2013-12-17 22:23:54
这是一个非常困难的问题,你需要字典来检查句子的单词,即使这样也没有确定的方法来做,例如句子:
“战争战争”
可能是"war (english) to (源自德语战争)奇异(源自荷兰战争)“,但无法区分这两种不同的语言。
老实说,如果你的问题定义是“将任何字符串拆分成它的组件语言”,我根本不确定是否能做到这一点。
编辑:如果你不介意这种烦人的边界情况,你可以查看谷歌的语言检测应用程序接口:https://code.google.com/p/language-detection/
它声称对超过53种语言的准确率为99%。这对你来说可能就足够了。
你还必须将其与一些智能的单词分组算法相结合,按字母类型进行拆分可能是一个很好的开始。您可以使用unicode字符范围正则表达式来拆分字母类型,例如:/([\u0600-\u06FF]+\s*)+/应匹配句子中用阿拉伯语书写的所有单词组。
如果您正在寻找特定的字母表,可以在维基百科上找到unicode代码的完整列表:https://en.wikipedia.org/wiki/List_of_Unicode_characters
编辑2:现在您已经缩小了问题解决方案的范围,您可以使用一个简单的正则表达式来实现:/([a-zA-Z,.]+\s*)+/将匹配用拉丁脚本编写的所有词组。如果使用了标点符号,您可以在该列表中添加更多标点符号,但记住要么以破折号开头,要么转义破折号,因为它在字符类中具有特殊意义。然后,您可以简单地在div标记中替换这些组来解决您的问题。
https://stackoverflow.com/questions/20636420
复制相似问题