Pythonで簡易的に形態素解析をする方法

以前、JavaScriptで簡易的に形態素解析をする方法を考えました。
今回はPythonで同じことをやってみました。
品詞を特定するのではなく漢字、カタカナの区切りを利用する方法です。
実は実用的ではありませんでした。メモとして残します。

def bunkatsu(text, words=[]):
  # テキストを単語に分割する。
  saki = text
  # あらかじめ指定した文字列(接続詞など)で分割
  for word in words:
    saki=saki.replace(word,"\t"+word+"\t")
  # 記号で分割
  pattern = r"(\s+)"
  saki = re.sub(pattern, r"\t", saki)
  # 記号で分割
  pattern = r"([\s。、.,:;]+)"
  saki = re.sub(pattern, r"\t\1\t", saki)
  # 英字で分割
  pattern = r"([a-zA-Z]+)"
  saki = re.sub(pattern, r"\t\1\t", saki)
  # カタカナで分割
  pattern = r"([\u30A1-\u30FF]+)"
  saki = re.sub(pattern, r"\t\1\t", saki)
  # 漢字で分割
  pattern = r"([\u2E80-\u2FDF\u3005-\u3007\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\U00020000-\U0002EBEF]+)"
  saki = re.sub(pattern, r"\t\1\t",saki)
  results = saki.split("\t")
  temps = []
  for temp in results:
    if temp != "":
      temps.append(temp)
  return temps

使用方法

text = "ゴーシュは町の活動写真館でセロを弾く係りでした。To Sherlock Holmes she is always the woman. "
words = ["まだ", "だから", "そして", "ところが", "あまり"]
result = bunkatsu(text, words)
print(result)

実行結果
[‘ゴーシュ’, ‘は’, ‘町’, ‘の’, ‘活動写真館’, ‘で’, ‘セロ’, ‘を’, ‘弾’, ‘く’, ‘係’, ‘りでした’, ‘。’, ‘To’, ‘Sherlock’, ‘Holmes’, ‘she’, ‘is’, ‘always’, ‘the’, ‘woman’, ‘.’]

コメント

タイトルとURLをコピーしました