All Articles

Pythonを使った自然言語処理をしたいがためのメモ

基礎技術

  • 形態素解析
  • 構文解析
  • 語義の曖昧性解消
  • 照応解析

形態素解析

PythonでMeCabを利用する。

pip install mecab-python3
Pythonで使ってみる
import MeCab

mecab = MeCab.Tagger()
result = mecab.parse("すもももももももものうち").split()

print(result)

MeCab.Taggerは、引数にオプションを文字列をとしてとります。 例:

  • mecab = MeCab.Tagger("-Owakati")
  • mecab = MeCab.Tagger("-Ochasen")
  • mecab = MeCab.Tagger("-Oyomi")
  • mecab = MeCab.Tagger("-d /opt/local/lib/mecab/dic/mecab-ipadic-neologd")
  • ....and more

入手可能な日本語の形態素解析エンジン

フリーで入手可能なもの
  • ChaSen(茶筌)、chasen.naist.jp (ラティス上の経路予測、HMM)
  • JUMAN、nlp.kuee.kyoto-u.ac.jp
  • KAKASI(kanji kana simple inverter)、kakasi.namazu.org
  • KyTea(キューティー)、http://www.phontron.com/kytea/ (点予測、線形分類)
  • MeCab(和布蕪)、taku910.github.io/mecab (ラティス上の経路予測、CRF)
  • NMeCab(MeCabの.NETへの移植)、github.com
  • Sen(MeCabのJavaへの移植)、ultimania.org、sen.dev.java.net
  • Igo (MeCab互換、Java形態素解析器)、igo.sourceforge.jp
  • Janome(Python)、https://pypi.python.org/pypi/Janome

    商用システム
  • Rosette形態素解析システム、Basis Technology

    • Amazon、MSN、楽天などで利用されており、世界で最も利用者の多い形態素解析エンジンであると言える。
  • 形態素解析エンジン言語郎、Zoo Corporation
  • 日本語形態素解析MARIMO ムーター株式会社

    • 大規模な辞書を持たず、1000語程度の学習モデルのみで未知語、新語、流行語、略語、話し言葉に対応する。
  • 日本語形態素解析Webサービス(Yahoo!デベロッパーネットワーク)、developer.yahoo.co.jp
  • 形態素解析API(gooラボ)、gooラボ by NTTレゾナント
  • IBM Watson Explorer (旧 IBM Watson Content Analytics)

形態素解析辞書(解析エンジンと合わせて利用)

フリーで入手可能なもの
  • ipadic :ChaSen用辞書。
  • NAIST-jdic :ChaSen,MeCab用の辞書。
  • UniDic :MeCab用の辞書。

構文解析

  • KNP
  • CaboCha
  • spaCy

語義の曖昧性解消

照応解析

自然言語処理の主な応用

  • 自動要約生成
  • 情報抽出
  • 情報検索、検索エンジン、概念検索
  • 機械翻訳、翻訳ソフト
  • 固有表現抽出
  • 自然言語生成
  • 光学文字認識
  • 質問応答システム
  • 音声認識
  • 音声合成
  • 校正、スペルチェッカ
  • かな漢字変換

ツール群

  • 文字コードや改行コードの統一: nkf Network Kanji Filter
  • 構造化タグの除去: Beautiful Soup
  • 文分割: sentence-spliter, Pragmatic Segmenter, jasentencesegmenter
  • 前処理ツール: neologdn
  • シソーラス: 日本語Word Net, 分類語彙表, 日本語語彙大系
  • 極性辞書: 日本語評価極性辞書, 単語感情極性対応表, 評価値表現辞書