pyhon
自然言語処理
形態素解析
ベトナム語

Pythonでベトナム語の形態素解析

仕事でベトナム語に触れる機会があって、ベトナム語の自然言語処理について調べたことがあります。本記事では、そこで知ったPythonのベトナム語の自然言語処理用ライブラリについて話そうと思います。ところで、日本でベトナム語の自然言語処理って需要あるんですかね?

ベトナム語ってどんな言語?

ベトナム語の例文を見てみましょう。

Tôi uống cà phê.

母音のついている記号は声調を表す記号(声調記号)です。英語のように文字の塊が空白区切りで書かれていて、文末はピリオドで終わっていますね。しかし、英語と違って、文字の一塊は一単語ではなく一音節です。ベトナム語の文は音節で分かち書きされているのです。

ベトナム語の単語は基本的に一音節一単語なのですが、複数の音節で一単語となる場合があります。したがって、ベトナム語で形態素解析を行うには、日本語のように複雑になります。

ちなみに、例文の意味は「私はコーヒーを飲む」で、単語は以下のようになります。

  • Tôi (私)
  • uống (飲む)
  • cà phê (コーヒー)

文法についてコメントしておくと、ベトナム語の語順はSVO型で、単語は基本的に並べるだけです。語形変化はありません。

ベトナム語の形態素解析

ベトナム語の形態素解析ができるPythonライブラリ

ベトナム語の形態素解析は複雑なので、それができるライブラリがあれば助かります。pypiでベトナム語の形態素解析ができるPythonライブラリを探したところ、良さそうなものがありました。その名はunderthesea。ベトナム語の自然言語処理について色々できるライブラリで、形態素解析の他に

  • 単語分割
  • Chunking
  • 固有表現抽出
  • 文書分類
  • 感情分析

が行えます。更新は比較的活発で、現時点での最終更新日は2017年12月26日です。今回はこのライブラリで形態素解析を行おうと思います。

形態素解析の実行

ライブラリを使って、上で挙げた例文の形態素解析をしてみましょう。次のPython3スクリプトを実行します。

from underthesea import pos_tag

text = 'Tôi uống cà phê.'
print(pos_tag(text))

実行結果はこのようになります。

[('Tôi', 'P'), ('uống', 'V'), ('cà phê', 'N'), ('.', 'CH')]

pos_tagはタプルのリストを返します。各タプルでは、一番目が単語で、二番目が品詞タグです。簡単に形態素解析ができましたね1

おまけ

(その1)ベトナム語のさらなる難しさ

ベトナム語で発音は非常に重要で、声調を正しく表現できないと口頭で意味が伝わりません。声調が違うだけで、言葉の意味が大きく変わることがあるのです。例えば、次の3つの単語を見てみましょう。

  • nhai
  • nhài
  • nhại

単語の意味は上から順に

  • 噛む
  • ジャスミン
  • パロディー

です。このように声調の違いで、品詞や意味が変わることがあります。

キーボードをベトナム語入力に設定するとわかるのですが、声調記号を入力するのは面倒です。なので、ベトナム語ユーザーはチャット等では声調記号を省略することがあるらしいのです2。つまり、上で挙げた例で言うと、全部nhaiになります。そうすると単語は意味は、文脈から読み取るしかありません。自然言語処理の難易度が上がるのです。挑戦したい人は頑張ってください。

(その2)面白いベトナム語の参考書

面白いベトナム語の参考書を1冊紹介しようと思います。タイトルは『男と女のベトナム語会話術』です。出会いからベッドの上まで、豊富な男女間の会話例が収録されています。CD付きなので、発音もちゃんと確認できます。


  1. ライブラリのドキュメントによると、この機能はPOS Tagging(品詞タグ付け)という名前で、形態素解析ではありませんね。文を単語に分割した上で品詞タグ付けを行っているから、形態素解析になるのでしょうか?自然言語処理の専門家の方、教えてください。 

  2. 要出典