自然言語研修
(1)形態素解析
■ Janomeのインストール:
!pip install janome
# !pip install janome==0.4.1
Collecting janome Downloading Janome-0.4.2-py2.py3-none-any.whl (19.7 MB) |████████████████████████████████| 19.7 MB 1.2 MB/s Installing collected packages: janome Successfully installed janome-0.4.2
■ 原始的な形態素解析の第一歩:
# Janomeのロード
from janome.tokenizer import Tokenizer
# Tokenizerインスタンスの生成
tokenizer = Tokenizer()
# 形態素解析の実施
tokens = tokenizer.tokenize("システムリンクで仕事をします!!")
# 解析結果の出力:複数の結果が入っておりループ処理で順番に出す
for token in tokens:
print(token) # 各単語の全情報
システム 名詞,一般,*,*,*,*,システム,システム,システム リンク 名詞,サ変接続,*,*,*,*,リンク,リンク,リンク で 助詞,格助詞,一般,*,*,*,で,デ,デ 仕事 名詞,サ変接続,*,*,*,*,仕事,シゴト,シゴト を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス ! 記号,一般,*,*,*,*,!,!,! ! 記号,一般,*,*,*,*,!,!,!
■ Janomeの使い方確認:
# Janomeのロード
from janome.tokenizer import Tokenizer
# Tokenizerインスタンスの生成
tokenizer = Tokenizer()
# 形態素解析の実施
tokens = tokenizer.tokenize("システムリンクで仕事をします!!")
# 解析結果の出力
for token in tokens:
print(token) # 各単語の全情報
# print(token.surface) #元の単語そのまま ⇒ 出力を省略
print(token.reading) # ヨミガナ
print(token.base_form) # (動詞などの)原形
print(token.part_of_speech) # 品詞情報
print(token.part_of_speech.split(',')) # 品詞情報をカンマで区切り、リスト形式に加工
print(token.part_of_speech.split(',')[0]) # [0]でリストの先頭の要素を参照
print("-----") # わかりやすいように単語ごとに仕切りを入れる
システム 名詞,一般,*,*,*,*,システム,システム,システム システム システム 名詞,一般,*,* ['名詞', '一般', '*', '*'] 名詞 ----- リンク 名詞,サ変接続,*,*,*,*,リンク,リンク,リンク リンク リンク 名詞,サ変接続,*,* ['名詞', 'サ変接続', '*', '*'] 名詞 ----- で 助詞,格助詞,一般,*,*,*,で,デ,デ デ で 助詞,格助詞,一般,* ['助詞', '格助詞', '一般', '*'] 助詞 ----- 仕事 名詞,サ変接続,*,*,*,*,仕事,シゴト,シゴト シゴト 仕事 名詞,サ変接続,*,* ['名詞', 'サ変接続', '*', '*'] 名詞 ----- を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ ヲ を 助詞,格助詞,一般,* ['助詞', '格助詞', '一般', '*'] 助詞 ----- し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ シ する 動詞,自立,*,* ['動詞', '自立', '*', '*'] 動詞 ----- ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス マス ます 助動詞,*,*,* ['助動詞', '*', '*', '*'] 助動詞 ----- ! 記号,一般,*,*,*,*,!,!,! ! ! 記号,一般,*,* ['記号', '一般', '*', '*'] 記号 ----- ! 記号,一般,*,*,*,*,!,!,! ! ! 記号,一般,*,* ['記号', '一般', '*', '*'] 記号 -----
■ ひらがなをカタカナに直す関数:
# Janomeのロード
from janome.tokenizer import Tokenizer
# Tokenizerインスタンスの生成
tokenizer = Tokenizer()
# ひらがなをカタカナに直す関数
def hira_to_kata(input_str):
return "".join([chr(ord(ch) + 96) if ("ぁ" <= ch <= "ん") else ch for ch in input_str])
print(hira_to_kata("ここに入れた文章のひらがなをカタカナに変えるよ"))
ココニ入レタ文章ノヒラガナヲカタカナニ変エルヨ
■ お嬢様コトバに変換:
# 変換用の辞書定義
ojyou_dict = {
"こんにちは" : "ごきげんよう",
"すみません": "恐れ入ります",
"ああそう" : "さようでございますか",
"おなら" : "天使のため息",
"ぶっとばすぞ" : "快適な空の旅をお楽しみください",
}
# 変換用の辞書に応じた変換処理を行う関数
def ippansimin2ojyou(input_str):
result_str = input_str
for key,value in ojyou_dict.items():
result_str = result_str.replace(key, value)
return result_str
print(ippansimin2ojyou("こんにちは、調子はどう?"))
print(ippansimin2ojyou("すみません、おならが出そうです"))
print(ippansimin2ojyou("ああそう、ぶっとばすぞ"))
ごきげんよう、調子はどう? 恐れ入ります、天使のため息が出そうです さようでございますか、快適な空の旅をお楽しみください