ラベル MeCab の投稿を表示しています。 すべての投稿を表示
ラベル MeCab の投稿を表示しています。 すべての投稿を表示

2013年3月18日月曜日

[MeCab]test.py 文字化け対策

Windows のコマンドプロンプトでは UTF-8 文字をそのまま表示することができない。そこで Python で扱いやすいユニコード文字列(文字列定義の先頭に u を付ける)で文字列を定義し、MeCab に渡すところで UTF-8 に変換、出力時にユニコード文字列に戻すようにする。

元ソース
#!/usr/bin/python
# -*- coding: utf-8 -*-

import MeCab
import sys
import string

sentence = "太郎はこの本を二郎を見た女性に渡した。"

try:

    print MeCab.VERSION

    t = MeCab.Tagger (" ".join(sys.argv))

    print t.parse(sentence)
(以下略)
出力結果
> python test.py~
0.993
螟ェ驛・蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝・
譛ャ     蜷崎ゥ・荳?闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
莠・蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝・
驛・蜷崎ゥ・荳?闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
隕・蜍戊ゥ・閾ェ遶・*,*,荳?谿オ,騾」逕ィ蠖「,隕九k,繝・繝・
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳?闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,縺ォ,繝・繝・
貂。縺・蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲・
EOS

        BOS/EOS,*,*,*,*,*,*,*,*
螟ェ驛・ 蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝
譛ャ     蜷崎ゥ・荳?闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
莠・    蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝
驛・    蜷崎ゥ・荳?闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
隕・    蜍戊ゥ・閾ェ遶・*,*,荳?谿オ,騾」逕ィ蠖「,隕九k,繝・繝
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳?闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,縺ォ,繝・繝
貂。縺・ 蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・    險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲
        BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: C:\Program Files\Develop\MeCab\etc\..\dic\ipadic\sys.dic
charset: UTF-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102
編集後
#!/usr/bin/python
# -*- coding: utf-8 -*-

import MeCab
import sys
import string
import codecs

sample = u"太郎はこの本を二郎を見た女性に渡した。"
sentence = sample.encode('utf-8')

print sample

try:

    print MeCab.VERSION

    t = MeCab.Tagger (" ".join(sys.argv))

    print t.parse(sentence)
    print t.parse(sentence).decode('utf-8')
出力結果
> python test.py
太郎はこの本を二郎を見た女性に渡した。
0.993
螟ェ驛・蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝・
譛ャ     蜷崎ゥ・荳?闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
莠・蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝・
驛・蜷崎ゥ・荳?闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
隕・蜍戊ゥ・閾ェ遶・*,*,荳?谿オ,騾」逕ィ蠖「,隕九k,繝・繝・
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳?闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,縺ォ,繝・繝・
貂。縺・蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲・
EOS

太郎    名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
この    連体詞,*,*,*,*,*,この,コノ,コノ
本      名詞,一般,*,*,*,*,本,ホン,ホン
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二      名詞,数,*,*,*,*,二,ニ,ニ
郎      名詞,一般,*,*,*,*,郎,ロウ,ロー
を      助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見      動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性    名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し    動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。      記号,句点,*,*,*,*,。,。,。
EOS

        BOS/EOS,*,*,*,*,*,*,*,*
螟ェ驛・ 蜷崎ゥ・蝗コ譛牙錐隧・莠コ蜷・蜷・*,*,螟ェ驛・繧ソ繝ュ繧ヲ,繧ソ繝ュ繝シ
縺ッ     蜉ゥ隧・菫ょ勧隧・*,*,*,*,縺ッ,繝・繝ッ
縺薙・  騾」菴楢ゥ・*,*,*,*,*,縺薙・,繧ウ繝・繧ウ繝
譛ャ     蜷崎ゥ・荳?闊ャ,*,*,*,*,譛ャ,繝帙Φ,繝帙Φ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
莠・    蜷崎ゥ・謨ー,*,*,*,*,莠・繝・繝
驛・    蜷崎ゥ・荳?闊ャ,*,*,*,*,驛・繝ュ繧ヲ,繝ュ繝シ
繧・    蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,繧・繝イ,繝イ
隕・    蜍戊ゥ・閾ェ遶・*,*,荳?谿オ,騾」逕ィ蠖「,隕九k,繝・繝
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
螂ウ諤ァ  蜷崎ゥ・荳?闊ャ,*,*,*,*,螂ウ諤ァ,繧ク繝ァ繧サ繧、,繧ク繝ァ繧サ繧、
縺ォ     蜉ゥ隧・譬シ蜉ゥ隧・荳?闊ャ,*,*,*,縺ォ,繝・繝
貂。縺・ 蜍戊ゥ・閾ェ遶・*,*,莠疲ョオ繝サ繧オ陦・騾」逕ィ蠖「,貂。縺・繝ッ繧ソ繧キ,繝ッ繧ソ繧キ
縺・    蜉ゥ蜍戊ゥ・*,*,*,迚ケ谿翫・繧ソ,蝓コ譛ャ蠖「,縺・繧ソ,繧ソ
縲・    險伜捷,蜿・轤ケ,*,*,*,*,縲・縲・縲
        BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: C:\Program Files\Develop\MeCab\etc\..\dic\ipadic\sys.dic
charset: UTF-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102

[MeCab]動作確認

  1. MeCab をインストールしたフォルダに移動する
  2. bin に移動する
  3. 次のテキストファイルを作成する
test.txt
こんにちは。今日もいい天気ですね。
コマンド
mecab.exe test.txt -o out.txt
出力結果 (out.txt)
こんにちは   感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ
。       記号,句点,*,*,*,*,。,。,。
今日      名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
も       助詞,係助詞,*,*,*,*,も,モ,モ
いい      形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気      名詞,一般,*,*,*,*,天気,テンキ,テンキ
です      助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね       助詞,終助詞,*,*,*,*,ね,ネ,ネ
。       記号,句点,*,*,*,*,。,。,。
EOS
わかち書き
mecab.exe test.txt -o out_wakati.txt -O wakati
出力結果 (out_wakati.txt)
こんにちは 。 今日 も いい 天気 です ね 。
ヨミ
mecab.exe test.txt -o out_yomi.txt -O yomi
出力結果 (out_yomi.txt)
コンニチハ。キョウモイイテンキデスネ。

[MeCab]MeCab を MinGW でビルド (断念)

Python: 2.7.2.5 (Active Python)
  1. MinGW からMinGW をダウンロードしてインストールする
    MSYS も必要なのでパッケージはすべて選択しておく
  2. 環境変数を設定
    • MINGW_HOME: (MinGW のインストール先)
    • MSYS_HOME: (MSYSのインストール先)
    • GCC_VER: (GCC バージョン, MinGW インストール先の libexec\gcc\mingw32\ 下にあるフォルダ名)
    • GCC_EXEC_PREFIX: %MINGW_HOME%\libexec\gcc\ (最後の \ を忘れずに)
    • PATH: %MSYS_HOME%\bin;%MINGW_HOME%\bin;%MINGW_HOME%\libexec\gcc\mingw32\%GCC_VER%
    • C_INCLUDE_PATH: %MINGW_HOME%\include;%MINGW_HOME%\lib\gcc\mingw32\%GCC_VER%\include;(Python インストール先)\include
    • CPLUS_INCLUDE_PATH: %C_INCLUE_PATH%;%MINGW_HOME%\include\c++\%GCC_VER%;%MINGW_HOME%\include\c++\%GCC_VER%\mingw32
    • LIBRARY_PATH: %MINGW_HOME%\lib;%MINGW_HOME%\lib\gcc\mingw32\%GCC_VER%;(Python インストール先)\libs
  3. MeCab から必要なパッケージをダウンロードする
    • MeCab ソースコード (mecab-0.993.tar.gz)
    • MeCab IPA 辞書 (mecab-ipadic-2.7.0-20070801.tar.gz)
    • Python バインディング (mecab-python-0.993.tar.gz)
  4. 3. でダウンロードしたファイルを展開する
  5. mecab-0.993 に入り configure を実行する
    > cd mecab-0.993
    > sh ./configure
  6. make を実行するとエラーになる
Note
configure をしたところで liblto_plugin-0.dll が見つからないとエラー表示されえることがある。
その場合は GCC_EXEC_PREFIX の設定を再確認する。これは gcc 実行時にオプション iprefix の引数として渡される。

[MeCab]Python バインディングインストール (Windows)

  1. Visual Studio 2008 Express Edition (Visual C++ 2008 Express Edition) をインストールする
  2. MeCab から必要なパッケージをダウンロードする
    • Windows 用バイナリ (mecab-0.993.exe)
    • Python バインディング (mecab-python-0.993.tar.gz)
  3. mecab-0.993.exe を実行して、インストールする
  4. mecab インストール先を PATH に追加する
  5. mecab-python-0.993.tar.gz を展開する
  6. mecab-python-0.993 フォルダに移動し setup.py を実行
    > python setup.py build
    Traceback (most recent call last):
      File "setup.py", line 13, in <module>
        version = cmd1("mecab-config --version"),
      File "setup.py", line 7, in cmd1
        return os.popen(str).readlines()[0][:-1]
    IndexError: list index out of range
  7. mecab-config がないとエラーが表示される
  8. setup.py を編集して mecab のバージョンとインストール先を指定する
    編集前
    setup(name = "mecab-python",
            version = cmd1("mecab-config --version"),
            py_modules=["MeCab"],
            ext_modules = [
                    Extension("_MeCab",
                        ["MeCab_wrap.cxx",],
                        include_dirs=cmd2("mecab-config --inc-dir"),
                        library_dirs=cmd2("mecab-config --libs-only-L"),
                        libraries=cmd2("mecab-config --libs-only-l"))
                        ])
    編集後
    setup(name = "mecab-python",
            version = '0.993',
            py_modules=["MeCab"],
            ext_modules = [
                    Extension("_MeCab",
                            ["MeCab_wrap.cxx",],
                            include_dirs=[r"C:\Program Files\Develop\MeCab\sdk"],
                            library_dirs=[r"C:\Program Files\Develop\MeCab\sdk"],
                            libraries=['libmecab'])
                            ])
  9. setup.py 実行
    > python setup.py build
    > python setup.py install
  10. test.py を実行しエラーが出ないことを確認(文字化けは発生する)

[MeCab]Windows へのインストール

  1. MeCab から Windows 用バイナリ (mecab-0.993.exe) をダウンロードする
  2. ダウンロードしたファイルを実行してインストールする

2013年1月4日金曜日

[Python]MeCab バインディング - 出現した単語を DB に登録

test02.py
# -*- coding: utf-8 -*-
import optparse
import codecs
import sqlite3
import MeCab

### Table 作成
def createTable(con, name):
 print "Create table"

 # Table が作成済みか確認する
 c = con.cursor()
 sql = "SELECT NAME FROM sqlite_master WHERE type='table'"
# print sql
 c.execute(sql)
 for row in c:
# print row
 if row[0] == name:
 print "Table '%s' already exists." % (name)
 return

 # Table 新規作成
 sql = "CREATE TABLE %s(ID INTEGER NOT NULL PRIMARY KEY, STR TEXT NOT NULL, COUNT INTEGER NOT NULL);" % (name)
 con.execute(sql)

### DB に登録
def addData(con, table, str):
 print "Add data (%s)" % (str)

 # 文字列が DB に登録済みか確認
 c = con.cursor()
 sql = "SELECT * FROM %s WHERE STR='%s';" % (table, str)
# print sql
 c.execute(sql)
 for row in c:
 if row != None:
 # COUNT 更新
 print "'%s' already exists in Table '%s'." % (str, table)
# print row
# print "[%d] %s: COUNT=%d" % (row[0], row[1], row[2])
 id = row[0]
 cnt = row[2] + 1
 sql = "UPDATE %s SET COUNT=%d WHERE ID=%d;" % (table, cnt, id)
# print sql
 con.execute(sql)
 return

 # 新規データ追加
 sql = "INSERT INTO %s (ID, STR, COUNT) values (NULL, '%s', 1);" % (table, str)
# print sql
 con.execute(sql)

### 全レコード表示
def showAllRecords(con, table, order):
 print "Show all records"
 c = con.cursor()
 sql = "SELECT * FROM %s" % (table)
 if order == "DESC":
 sql += " ORDER BY COUNT DESC;"
 elif order == "ASC":
 sql += " ORDER BY COUNT ASC;"
 else:
 sql += ";"
 print sql
 c.execute(sql)
 for row in c:
 print "[%d] %s %d" % (row[0], row[1], row[2])

### Main function
parser = optparse.OptionParser()
parser.add_option("-i", "--input", dest="input", help="Input file name", metavar="[INPUT]")
parser.add_option("-d", "--database", dest="database", help="Database file name", metavar="[DATABASE]")
(options, args) = parser.parse_args()
print "Input file name : %s" % (options.input)
print "Database file name: %s" % (options.database)
if options.input == None:
 parser.print_help()
 exit()
if options.database == None:
 parser.print_help()
 exit()

fd = codecs.open(options.input, 'r', 'utf-8')

# Database を開く
con = sqlite3.connect(options.database, isolation_level=None) # Commit 不要
tableName = 'test'
createTable(con, tableName)

for line in fd:
 line = line.rstrip() # 行末の空白・改行コードを削除する
 print line
 t = MeCab.Tagger("")
 ret = t.parse(line.encode('utf-8'))
 print ret.decode('utf-8')

 # MeCab 内では UTF-8 で処理されるので utf-8 に変換して文字列を渡す
 m = t.parseToNode(line.encode('utf-8'))
 while m:
 # MeCab からの出力は UTF-8 になっているので unicode に decode して表示する
 str = m.surface.decode('utf-8')
 if str != "":
 print str
 # DB に単語の出現数を登録
 addData(con, tableName, str)
 m = m.next

fd.close()

# 結果表示
showAllRecords(con, tableName, 'DESC')

# Database を閉じる
con.close()
実行結果
> python test02.py -i sample.txt -d out.sqlite
Input file name : sample.txt
Database file name: out.sqlite
Create table
こんにちは、今日はいい天気ですね。
こんにちは 感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ
、 記号,読点,*,*,*,*,、,、,、
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
。 記号,句点,*,*,*,*,。,。,。
EOS

こんにちは
Add data (こんにちは)
、
Add data (、)
今日
Add data (今日)
は
Add data (は)
いい
Add data (いい)
天気
Add data (天気)
です
Add data (です)
ね
Add data (ね)
。
Add data (。)
一緒にお散歩に行きましょう。
一緒 名詞,サ変接続,*,*,*,*,一緒,イッショ,イッショ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
お 接頭詞,名詞接続,*,*,*,*,お,オ,オ
散歩 名詞,サ変接続,*,*,*,*,散歩,サンポ,サンポ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行き 動詞,自立,*,*,五段・カ行促音便,連用形,行く,イキ,イキ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
。 記号,句点,*,*,*,*,。,。,。
EOS

一緒
Add data (一緒)
に
Add data (に)
お
Add data (お)
散歩
Add data (散歩)
に
Add data (に)
'に' already exists in Table 'test'.
行き
Add data (行き)
ましょ
Add data (ましょ)
う
Add data (う)
。
Add data (。)
'。' already exists in Table 'test'.
天気が悪くなってきたら急いで帰りましょう。
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
悪く 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,悪い,ワルク,ワルク
なっ 動詞,自立,*,*,五段・ラ行,連用タ接続,なる,ナッ,ナッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
き 動詞,非自立,*,*,カ変・クル,連用形,くる,キ,キ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
急い 動詞,自立,*,*,五段・ガ行,連用タ接続,急ぐ,イソイ,イソイ
で 助詞,接続助詞,*,*,*,*,で,デ,デ
帰り 動詞,自立,*,*,五段・ラ行,連用形,帰る,カエリ,カエリ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
。 記号,句点,*,*,*,*,。,。,。
EOS

天気
Add data (天気)
'天気' already exists in Table 'test'.
が
Add data (が)
悪く
Add data (悪く)
なっ
Add data (なっ)
て
Add data (て)
き
Add data (き)
たら
Add data (たら)
急い
Add data (急い)
で
Add data (で)
帰り
Add data (帰り)
ましょ
Add data (ましょ)
'ましょ' already exists in Table 'test'.
う
Add data (う)
'う' already exists in Table 'test'.
。
Add data (。)
'。' already exists in Table 'test'.
Show all records
SELECT * FROM test ORDER BY COUNT DESC;
[9] 。 3
[6] 天気 2
[11] に 2
[15] ましょ 2
[16] う 2
[1] こんにちは 1
[2] 、 1
[3] 今日 1
[4] は 1
[5] いい 1
[7] です 1
[8] ね 1
[10] 一緒 1
[12] お 1
[13] 散歩 1
[14] 行き 1
[17] が 1
[18] 悪く 1
[19] なっ 1
[20] て 1
[21] き 1
[22] たら 1
[23] 急い 1
[24] で 1
[25] 帰り 1

[Python]MeCab バインディング - Python からの使い方

test01.py
# -*- coding: utf-8 -*-
import optparse
import codecs
import MeCab

parser = optparse.OptionParser()
parser.add_option("-i", "--input", dest="input", help="Input file name", metavar="[INPUT]")
(options, args) = parser.parse_args()
print "Input file name: %s" % (options.input)

if options.input == None:
 parser.print_help()
 exit()

fd = codecs.open(options.input, 'r', 'utf-8')
for line in fd:
 line = line.rstrip() # 行末の空白・改行コードを削除する
 print line
 t = MeCab.Tagger("")

 # MeCab 内では UTF-8 で処理されるので utf-8 に変換して文字列を渡す
 ret = t.parse(line.encode('utf-8'))
 # MeCab からの出力は UTF-8 になっているので unicode に decode して表示する
 print ret.decode('utf-8')

 m = t.parseToNode(line.encode('utf-8'))
 while m:
 str = m.surface.decode('utf-8')
 print str
 m = m.next

fd.close()
sample.txt
こんにちは、今日はいい天気ですね。
一緒にお散歩に行きましょう。
天気が悪くなってきたら急いで帰りましょう。


実行結果

> python test01.py -i sample.txt
Input file name: sample.txt
こんにちは、今日はいい天気ですね。
こんにちは 感動詞,*,*,*,*,*,こんにちは,コンニチハ,コンニチワ
、 記号,読点,*,*,*,*,、,、,、
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
いい 形容詞,自立,*,*,形容詞・イイ,基本形,いい,イイ,イイ
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
。 記号,句点,*,*,*,*,。,。,。
EOS


こんにちは
、
今日
は
いい
天気
です
ね
。

一緒にお散歩に行きましょう。
一緒 名詞,サ変接続,*,*,*,*,一緒,イッショ,イッショ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
お 接頭詞,名詞接続,*,*,*,*,お,オ,オ
散歩 名詞,サ変接続,*,*,*,*,散歩,サンポ,サンポ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行き 動詞,自立,*,*,五段・カ行促音便,連用形,行く,イキ,イキ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
。 記号,句点,*,*,*,*,。,。,。
EOS


一緒
に
お
散歩
に
行き
ましょ
う
。

天気が悪くなってきたら急いで帰りましょう。
天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
悪く 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,悪い,ワルク,ワルク
なっ 動詞,自立,*,*,五段・ラ行,連用タ接続,なる,ナッ,ナッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
き 動詞,非自立,*,*,カ変・クル,連用形,くる,キ,キ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
急い 動詞,自立,*,*,五段・ガ行,連用タ接続,急ぐ,イソイ,イソイ
で 助詞,接続助詞,*,*,*,*,で,デ,デ
帰り 動詞,自立,*,*,五段・ラ行,連用形,帰る,カエリ,カエリ
ましょ 助動詞,*,*,*,特殊・マス,未然ウ接続,ます,マショ,マショ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
。 記号,句点,*,*,*,*,。,。,。
EOS


天気
が
悪く
なっ
て
き
たら
急い
で
帰り
ましょ
う
。