言語解析を行う
==========================

.. Contents:: 目次
    :local:
    :depth: 1

.. highlight:: console

| 本ガイドでは、テキスト分析 AAPFアドオンによる言語解析を行います。
| 言語解析機能とは、テキストの形態素解析や構文解析を行う機能であり、すべてのテキスト処理の前段階で呼び出されます。
| 言語解析を行うことで、文書中の高頻出の単語を見つけたり、その単語の原型や品詞が何であるかを解析することができます。

今回は形態素解析を実行するシナリオを示します。

.. _preparation_analyze:

データを準備する
-------------------

言語解析機能を動かすための設定ファイルを準備します。

#. ユーザがアクセス可能なディレクトリにdester-python-getting_started-1.2.0_2.zipを格納します。

#. 格納したファイルを解凍します。

   .. code-block:: bash
   
     $ unzip dester-python-getting_started-1.2.0_3.zip

#. ディレクトリを移動します。

   .. code-block:: bash
   
     $ cd dester-python-getting_started-1.2.0_3

.. _analyze:

分析を実行する
--------------------------

今回は、自動車の不具合のサンプルデータから「走行中にエンジン警告灯が点灯した。」という文を
言語解析して形態素解析の結果を確認します。

1. 必要なモジュールのインポート
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

テキスト分析 AAPFアドオンを利用するために、dester_pythonをimportします。

In [1]:

.. code-block:: python

	import os
	import pandas as pd
	import dester_python
	
2. 設定ファイルの読み込み
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

createDeSTERProperties()メソッドで設定ファイルを読み込みます。
DATA_DIR_PATHには :ref:`preparation_analyze` で解凍した設定ファイルのパスを指定して下さい。

以下では、 :ref:`preparation_analyze` で解凍したディレクトリと、ipynbファイルが同じディレクトリにある場合の例を示しています。

In [2]:

.. code-block:: python

	# 解析対象の文字列
	text = '走行中にエンジン警告灯が点灯した。'

	# 設定ファイルのパスを指定します。
	CUR_DIR_PATH = os.path.abspath(os.path.curdir)
	DATA_DIR_PATH = os.path.join(CUR_DIR_PATH, 'examples/morphological_analysis/data/')

	# 設定ファイルのパスを指定します。
	conf_path = os.path.join(DATA_DIR_PATH, 'morphological_analysis.conf')

	# 設定ファイルを読み込みます。
	properties = dester_python.createDeSTERProperties(conf_path)

3. 言語解析の実行
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

読み込んだ設定ファイルをもとに、言語解析を実行します。

In [3]:

.. code-block:: python

	# 言語解析を実行します。
	analyzingProcess = dester_python.createDeSTERAnalyzingProcess(properties)
	analyzingProcess.startAnalyzeProcess()
	rawDocument = dester_python.createRawDocument('docId', text)
	document = analyzingProcess.run(rawDocument)

4. 結果の表示
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

言語解析の実行結果を表示します。

In [4]:

.. code-block:: python

	# 形態素解析結果を表示します。
	df = pd.DataFrame(columns=['表層形', '原型', '品詞'])
	words = document.getWords()
	num = 0
	for word in words:
		num += 1
		df.loc[num] = [word.getForm(), word.getLemma(), word.getPos()]

	analyzingProcess.endAnalyzeProcess()

	df

====  ============  =============  =============
\      表層形        原型           品詞
====  ============  =============  =============
1     走行          走行           サ変
2     中            中             名詞-一般
3     に            に             助詞-格助詞
4     エンジン      エンジン       名詞-一般
5     警告灯        警告灯         名詞-一般
6     が            が             助詞-格助詞
7     点灯          点灯           サ変
8     し            する           サ変語尾
9     た            た             助動詞-一般
10    。            。             記号-句点
====  ============  =============  =============

今回は形態素解析結果の一部を表示しており、「表層形、原型、品詞」以外にも形態素解析によって得られる情報があります。
