有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果没有JAVA的外部资源,我们如何从推文中删除(或检测)非英语标记

我如何在保留标签(#xxx)、URL(@xxxx)和提及(@xxx)的情况下从推文中删除非英语标签? 我发现: 所容纳之物replaceAll(“\W”和“”) 这里:Remove all non-"word characters" from a String in Java, leaving accented characters?,但它并没有真正的帮助。 我知道有很多语言检测工具,比如微软one,以及其他复杂的方法,但是我想要一些正则表达式,或者我可以在JAVA中使用的方法,而不需要外部资源(比如字典)。 这是推文的一个例子:“Meeeeeee!RT@missLOVElace_33;:谁想要我的80000条推文?”

如果JAVA中有方法可以检测推文是否是非英语的,那将非常棒。这里有一个类似的例子: http://babel-fett.heroku.com/ 但它是用红宝石做的

谢谢


共 (2) 个答案

  1. # 1 楼答案

    一个词不是英语有两个条件(如果一个词不是英语,通常你可以断定这个短语不是英语)

    1-检查第一个字母是否不是大写:无论语言是什么,专有名词都保持不变

    2-所有英文字母都包含在[a-zA-Z]中,所以我想检查一个单词是否是英语并不难。下面是一个非详尽的字符列表,例如英语中不存在的字符:

    äàáãæå
    ëèéê
    ïìíî
    òóôö
    ð
    ñ
    

    但基本上,每个不匹配的单词都不是英语。。。(除非单词的第一个字母是大写字母,我重复一遍)

    但是你看,即使是在线工具也是这样。就拿这句话来说,Hoark blerk,它没有任何意义,你的工具检测到它是英语,因为我没有使用任何非字母。因此,如果你真的想深入研究,你必须创建一个包含所有英语单词的数据库(我认为它已经存在),并检查你的单词是否与词典的任何条目匹配。。。但我怀疑你真的想这么精确

    记住保留@whatever#whatever_again,有括号和没有括号(使用简单的正则表达式很容易实现)。别忘了忽略表情符号,比如笑脸等。除非一种语言包含这些符号作为字母,你应该保留它们;)