web-dev-qa-db-ja.com

NLTKには、テキストの正規化と正規化のためのクラスはありますか?

NLTKのドキュメントと例の一般的な量は、レンマ化とステミングに専念していますが、次のような正規化の問題については非常にまばらです。

  • すべての文字を小文字または大文字に変換する
  • 句読点の削除
  • 数字を単語に変換する
  • アクセント記号やその他の発音区別符号の削除
  • 略語の拡張
  • ストップワードまたは「あまりにも一般的な」単語の削除
  • テキストの正規化(腫瘍=腫瘍、それは=です)

NLTKのどこをDigに向けてください。前述の目的のためのNLTK同等物(Javaまたはその他)は大歓迎です。ありがとう。

[〜#〜] upd [〜#〜]。私はpythonテキスト読み上げの目的でテキスト正規化のライブラリを作成しました https://github.com/soshial/text-normalization 。それは合うかもしれませんあなたも。

19
soshial

また、NLTK仕様では、多くの(サブ)タスクが純粋にpython methods を使用して解決されます。

a)すべての文字を小文字または大文字に変換する

text='aiUOd'
print text.lower()
>> 'aiuod'
print text.upper()
>> 'AIUOD'

b)句読点の削除

text='She? Hm, why not!'
puncts='.?!'
for sym in puncts:
    text= text.replace(sym,' ')
print text
>> 'She  Hm  why not '

c)数字を単語に変換する

ここでは、いくつかのライナーを書くのはそれほど面倒ではありませんが、グーグルで検索すると、既存のソリューションがたくさんあります。 コードスニペットライブラリ など

d)アクセント記号やその他の発音区別符号の削除

ポイントb)を検索し、発音区別符号をpunctsとしてリストを作成します。

e)略語の拡張

略語を使用して辞書を作成します。

text='USA and GB are ...'
abbrevs={'USA':'United States','GB':'Great Britain'}
for abbrev in abbrevs:
    text= text.replace(abbrev,abbrevs[abbrev])
print text
>> 'United States and Great Britain are ...'

f)ストップワードまたは「あまりにも一般的な」単語の削除

ストップワードを使用してリストを作成します。

text='Mary had a little lamb'
temp_corpus=text.split(' ')
stops=['a','the','had']
corpus=[token for token in temp_corpus if token not in stops]
print corpus
>> ['Mary', 'little', 'lamb']

g)テキストの正規化(腫瘍=腫瘍、それは=です)

腫瘍の場合->腫瘍の使用 正規表現

最後になりましたが、上記の例はすべて、通常、実際のテキストを調整する必要があることに注意してください。私はそれらを方向性として書きました。

17
Max Li

私は少し遅れるかもしれませんが、これは役に立つかもしれません。いくつかの言語(英語、フランス語、ドイツ語、仕上げ、ハンガリー語、トルコ語、ロシア語、チェコ語、ギリシャ語、アラビア語、中国語、日本語、韓国語、カタロニア語、ポーランド語、ヘブライ語、ノルウェー語、スウェーデン語、イタリア語、ポルトガル語、スペイン語)のストップワードは次のとおりです。 ): https://pypi.python.org/pypi/many-stop-words

1

ストップワードの削除にはstopwords.words()を使用することをお勧めします。次の言語をサポートします:デンマーク語、オランダ語、英語、フランス語、ドイツ語、イタリア語、ノルウェー語、ポルトガル語、ロシア語、スペイン語、スウェーデン語。

1
wishiknew