PyQt5を使って,テキストファイルをGUIで選択して形態素解説するツールやコードが調べた限りなさそうだったので作りました.(一回一回,テキストファイルの場所をターミナルで調べるのが怠いので.)
PyQtで完結しろよというツッコミは今回はスルー
形態素解析というのは,
**今日は月が綺麗ですね.**という文が与えられた時,
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
月 名詞,一般,*,*,*,*,月,ツキ,ツキ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
綺麗 名詞,形容動詞語幹,*,*,*,*,綺麗,キレイ,キレイ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,*,*,*,*,ね,ネ,ネ
. 記号,句点,*,*,*,*,.,.,.
のようにすることを形態素解析といいます.今回はmecabを使ってます.
実行すると,
このようにQTのファイルダイアログが表示されます.
形態素解析したいテキストファイルを指定して(クリックして)OPENボタンを押すとウィンドウが閉じられて,出力がターミナルに表示されます.
(文字すごい小さいですが,名詞をスペース区切りで表示してます.)
あとは,ターミナルでパイプラインでファイル名打って保存したりして使ってください.
以下がコードです.
@shiracamusさんにリファクタリングしていただきました。
※事前にpipでPyQt5とmecabをインストールしておいてください.
# -*- coding: utf-8 -*-
import sys
import MeCab
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PyQt5.QtGui import QIcon
class FileNameDialog(QWidget):
title = '形態素解析するファイルを選択'
left, top, width, height = 10, 10, 640, 480
def open(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(
self, self.title, "", "Text File (*.txt)", options=options)
return fileName
def show_words(text):
# 辞書にneologdを使用
m = MeCab.Tagger("/usr/local/lib/mecab/dic/mecab-ipadic-neologd")
list_parse_text = m.parse(text).split("\n")
for p_text in list_parse_text:
if p_text.find("名詞,一般") >= 0 or p_text.find("名詞,固有名詞") >= 0:
print(p_text[:-1].split("\t")[0] + " ", end="")
def main():
app = QApplication(sys.argv)
# sys.exit(app.exec_())
dialog = FileNameDialog()
fileName = dialog.open()
dialog.close()
if fileName:
with open(fileName, 'r') as f:
text = f.read()
show_words(text)
if __name__ == '__main__':
main()
[追記:2017/12/22]
ファイルを複数選択できるようにしました.
下のgithubのが最新のものとなります.
morph_gui
https://github.com/Ooshita/morph_gui