英語のテキストを辞書の項目に載っている形に正規化してくれるソフトウェアを探しています。例えば


A topic should also meet Wikipedia's standards of "notability",[58] which usually means that it must have received significant coverage in reliable secondary sources

というテキストを入力すると

A topic should also meet Wikipedia standard of notability which usually mean that it must have receive significant coverage in reliable secondary source

というように時制や単数・複数、修飾などの情報を取り除いたテキスト(単語列)を返してくれるものです。

ある程度近似的な処理でも構わないので、大量の文章を出来るだけ高速に正規化できる仕組みを探しています。もしそういった手法なりソフトウェアをご存知の方がいらっしゃいましたら教えてください。python等から使えるモジュールの形になっていれば理想的です。

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/09/17 06:07:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:gp334437g4723k87 No.4

回答回数126ベストアンサー獲得回数20

ポイント50pt

その処理は辞書方式を含めて単純な置換処理で対応すると確実に文法が崩れることとなるわけですが、それでもかまわないのでしょうか? 


NPLは、学部学生あたりのレベルでは日本語は難しいが、英文は簡単という風に思われていますが、英語のNPLが簡単なのは形態素解析位で、構文解析のレベルまで行くと、英語も日本語も難易度ではそう大した違いは生じなくなってきます。


以前、英文の自然言語解析プログラムを作った際には、いろいろ探した挙げくにPerlに行き着きました。Perlであれば、前処理で単純な置換処理をかけ、後処理で文法チェックをかければ可能ではないかと思います。ちなみにPerlだと


アポストロフィーの処理はAcme::Lingua::EN::Inflect:Modern

複数形正規化の処理はLingua::Stem

http://www.mawode.com/~waltman/talks/nlp_ppw.pdf


などで可能です。NLPといえばCommmon LispでCommon Lispあたりだともっと高度なライブラリーがあるかと思いますが、Lispはガーベッジコレクションが介在するために処理が遅いのが難点です。

id:satehasateha

文法はとりあえず気にせず、いわゆるバッグオブワードモデルに使えるように前処理をしたいと考えていました。ご紹介いただいたPerlのライブラリが正に探していたもののように思います。ありがとうございました。

2010/09/13 14:17:28

その他の回答3件)

id:hfgvbcv No.1

回答回数31ベストアンサー獲得回数0

今調べてます。まってて、下さい

http://q.hatena.ne.jp

id:tasklight No.2

回答回数323ベストアンサー獲得回数40

ポイント30pt

Linuxをご利用でしたら sed を使って下記のようにしてみてください。

sed -e 's/[^a-zA-Z0-9 ]//g' 変換元ファイル名
id:satehasateha

回答ありがとうございます。

ただこれは少し求めていたものと異なります。質問が判りにくかったのだと思いますが、

Wikipedia's >> Wikipedia

standards >> standard

received >> receive

という形に正規化してくれる手法を探しています。

2010/09/12 17:41:10
id:kick_m No.3

回答回数1372ベストアンサー獲得回数54

ポイント20pt

スペルチェッカーのオプションでできそうですね。http://www

id:satehasateha

回答ありがとうございます。

時制等を正規化してくれるようなスペルチェッカーがあるのですか? 具体的なソフト、やり方を教えてもらえませんか?

2010/09/12 18:20:54
id:gp334437g4723k87 No.4

回答回数126ベストアンサー獲得回数20ここでベストアンサー

ポイント50pt

その処理は辞書方式を含めて単純な置換処理で対応すると確実に文法が崩れることとなるわけですが、それでもかまわないのでしょうか? 


NPLは、学部学生あたりのレベルでは日本語は難しいが、英文は簡単という風に思われていますが、英語のNPLが簡単なのは形態素解析位で、構文解析のレベルまで行くと、英語も日本語も難易度ではそう大した違いは生じなくなってきます。


以前、英文の自然言語解析プログラムを作った際には、いろいろ探した挙げくにPerlに行き着きました。Perlであれば、前処理で単純な置換処理をかけ、後処理で文法チェックをかければ可能ではないかと思います。ちなみにPerlだと


アポストロフィーの処理はAcme::Lingua::EN::Inflect:Modern

複数形正規化の処理はLingua::Stem

http://www.mawode.com/~waltman/talks/nlp_ppw.pdf


などで可能です。NLPといえばCommmon LispでCommon Lispあたりだともっと高度なライブラリーがあるかと思いますが、Lispはガーベッジコレクションが介在するために処理が遅いのが難点です。

id:satehasateha

文法はとりあえず気にせず、いわゆるバッグオブワードモデルに使えるように前処理をしたいと考えていました。ご紹介いただいたPerlのライブラリが正に探していたもののように思います。ありがとうございました。

2010/09/13 14:17:28

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません