0

ハッシュタグ(#xxx)、URL(@xxxx)、メンション(@xxx)を保持したまま、英語以外のタグをツイートから削除するにはどうすればよいですか?私はこれを見つけました:content.replaceAll( "\ W"、 "")ここで:Javaの文字列からすべての非 "単語文字"を削除し、アクセント付き文字を残しますか?、しかしそれは本当に役に立ちません。Microsoftのものや他の複雑なメソッドのような多くの言語検出ツールがあることは知っていますが、外部リソース(辞書など)なしでJAVAで使用できる正規表現またはメソッドが必要です。これはツイートの例です:「Meeeeeee!RT @missLOVElace_:誰が私の80,000ツイートを望んでいますか?」

ツイートが英語以外の言語であるかどうかを検出できるメソッドがJAVAにある場合、それは非常に優れています。同様のものがここにあります:http: //babel-fett.heroku.com/ ですが、Rubyにあります。

ありがとう!

4

2 に答える 2

1

私はJava正規表現を使用しました:content.replaceAll( "[^ A-Za-z0-9 -_ @#\ s]"、 "")...動作します..Java言語検出器を探しています。オフラインで動作する堅牢なツールを探しています。これを見つけました:http ://code.google.com/p/language-detection/wiki/GettingStarted そしてそれは良いツールだと思います。その他の関連する質問はここにあります:https ://stackoverflow.com/q/1923844/1515897 、ユーザーが入力したテキストの言語を検出する方法は?

于 2012-07-11T16:47:21.607 に答える
0

さて、単語が英語でないための2つの条件があります(そしてそれは単語が英語ではない、あなたはフレーズが通常ではないと結論付けることができます)。

1-最初の文字が大文字でないかどうかを確認します。言語が何であれ、適切な名詞は変更されません。

2-すべての英字は[a-zA-Z]に含まれているので、単語が英語かどうかを確認するのはそれほど難しいことではないと思います。これは、たとえば英語には存在しない文字の非網羅的なリストです。

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

しかし、基本的に、一致しない単語はすべて\w英語ではありません...(単語の最初の文字が大文字である場合を除いて、繰り返します)。

しかし、ほら、オンラインのツールでさえこのようにしています。Hoark blerkという文を取ります。これは意味がありません。\w以外の文字を使用しなかったため、ツールはそれを英語として検出します。したがって、本当に深く掘り下げたい場合は、すべての英語の単語を含むデータベースを作成し(すでに存在していると思います)、単語が辞書のどのエントリとも一致するかどうかを確認する必要があります...しかし、本当にそうなりたいとは思えません。正確。

@whatever括弧の有無にかかわらず、とを保持することを忘れないでください#whatever_again(これは単純な正規表現を使用して非常に簡単に達成できます)。また、スマイリーなどの句読点を無視することを忘れないでください。言語にこれらの記号が文字として含まれている場合を除いて、そのままにしておく必要があります;)

于 2012-07-11T08:23:41.373 に答える