2016-05-05 4 views
0

私は正規表現かに応じて任意のユーティリティクラススプリット文字列

例1:?

を使って単語に中国語または日本語または英語を含む文字列を分割することができますどのように オハイオ州立大学のグループによる2013年の研究から研究

出力1:

2013年からの調査によると

、オハイオ州立大学

例2からのグループによる研究:

米国からの研究グループによる2013年の調査によると

出力2:

、2013年、調査によると、によって、しかし、はい、英語の文字列はまたによって分割されなければならない。両方が別の文字列に来る -

にそれは、入力文字列が日本語と英語を混ぜないであろうことは確かだが、米国、から、研究グループ、コードのこの作品:これはJavaでできない場合は、英語以外の入力文字列が空白文字で区切ることができた場合にのみ

+1

は、私が聞いてもいいですか? – Pang

+0

申し訳ありませんが、中国語については考えていないので、誤って起こってしまいました。 – Kishore

答えて

3

は、私はあなたが持っていることの問題を考える

words = input.split("[ ./()\\[\\]=,<>;\"']+"); 

提案してください。中国の(そしておそらく日本だけでなく、私はそれについて多くを知らないが)その単語の区切りでありますある文脈。時々、2つの文字は、2つの別々の単語、時には同じ2つの文字が単一の単語になるだろう。だから、

私はあなたがこれを行うことができるようにテキストを解析する必要があると思います。

+1

日本語は間違いなく文脈的なので、正規表現はこれをやり始めません。大部分は空白がなく、漢字の認識、動詞と形容詞の共役の認識、およびパーティクル文字の認識など、単語の開始と終了の場所によって異なります。自然言語パーサが必要です。 –

+1

さて、私はそれを編集して「あなたはできない」と言えるでしょう。質問者が望んだ範囲内ですべての質問に答えることはできません。これは妥当な質問ですが、答えは「このようなもの」ではありません。「それはあなたができないためです...」 – dlu

+0

@dlu、はい私は自然言語のパーサ "java.text.BreakIterator"を試しました。 "[./()\\[¥\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" - 英語。 – Kishore

1

例1:

2013からの調査によると、オハイオ州立大学

出力1からのグループによる研究:

年からの調査によると

、オハイオ州立大学のグループによる研究

これは正しい出力が2013による:.

でなければなりません間違って中国 ですオハイオ州立大学の研究グループによる研究では、チン

ためのライブラリあなたを必要とします出力1で「へのグループ」で-間「における」や「研究」とスペースがない、なぜこれを行うには、ESE言葉。

+0

Ok ...私のJava用の無料ライブラリを教えてください? – Kishore

関連する問題