LiTA (Linfer Text Analytics) 機能紹介
LiTA の機能を紹介します.
実装済み
実装中
実装予定
その他
諸元表
概要
プロジェクトに含まれるドキュメントのタイトル(CSV の場合、id
または title
)と文数、単語数および文字数が表示されます。
ただしパフォーマンスの都合上、現在は最大 50 件のみを表示しています。
本文
概要
ペイン上部からドキュメントを選択すると、本文(CSV の場合、body
に指定したカラム)が表示されます。
ただしパフォーマンスの都合上、現在は最大 50 件のみが選択できます。
単語 N-gram 頻度 (TF/IDF)
概要
テキスト中に頻出する単語や単語列(単語 N-gram)を表示します。以下のパラメータがあります。
パラメータ | 初期値 | 説明 |
---|---|---|
N | 3 | "単語 N-gram" の N を、1以上5以下で指定します。 |
単語数 | 20 | 表示するのは単語 N-gram の上位何単語かを指定します。 |
ソート関数 | TF による | 単語 N-gram をどのようにソートするか指定します。 単語の出現回数(TF)による比較か、TF-IDF による比較かを選べます。 |
品詞フィルター | 内容語のみ表示 | 特定の品詞のみを表示、もしくは除外します。 |
品詞についての詳細はこちらを参照してください。
詳細
定義
単語 N-gram \( g \) の TF (term frequency) は全文中の出現回数(整数値)を、DF (document frequency) は少なくとも一回出現するドキュメント数を表します。全ドキュメントの個数を \( D \) とするとき、N-gram \( g \) の IDF (inverse document frequency) は次式で与えられます:
\[ \text{IDF} (g) = \log \frac{D}{\text{DF} (g)}. \]
ここで対数 \( \log \) は自然対数を表します。
さらに \( G \) を全 N-gram の出現回数、つまりすべての N-gram にわたる和 \( G = \sum \text{TF} (g) \) として、N-gram \( g \) の TF-IDF を
\[ \text{TF-IDF} (g) = \frac{\text{TF} (g) \cdot \text{IDF} (g)}{G} \]
で定義します。ただし便宜上、\( D = 0 \) のときは \( \text{TF-IDF} (g) = - \infty \) と定め、\( D \neq 0 \) でかつ \( \text{TF} (g) = \text{DF} (g) = 0 \) のときは \( \text{TF-IDF} (g) = 0 \) と定めます。
トピックモデル (LDA; Latent Dirichlet Allocation)
概要
トピックモデル (LDA; Latent Dirichlet Allocation) を計算して結果を表示します。
以下の各トピック数分だけモデルを計算します。
- 32, 64, 96, 128, 160, 192, 224, 256
LDA の計算の対象となる単語は以下の品詞をもつものです。
- 名詞, 動詞, 形容詞, 形状詞, 副詞
計算結果の表示
時系列
文書に日付が紐付いている場合、各文書のトピックのスコアを日付ごとに足し合わせた値をグラフで表示します。 日付の設定については時間・日付についてを参照してください。
共起ネットワーク
概要
出現パターンの似た(共起する)単語同士を線で結んだネットワークを描画します。以下のパラメータがあります。
パラメータ | 初期値 | 説明 |
---|---|---|
エッジ数 | 20 | 共起関係(エッジ)のうち上位いくつまで描画するかを指定します。 |
Jaccard 係数 | 0.2/0.8 | 共起の強度が高い・低い単語を除外します。常に共起するような単語対がノイズとなることを防ぎます。 |
品詞フィルター | 内容語のみ表示 | 特定の品詞のみを表示、もしくは除外します。 |
サブグラフ検出(community detection) | オン | 関連度の高い単語同士で色分けします。 |
出現頻度によって円の大きさを変える | オン | 出現頻度が高いほど円を大きくします。他の単語との相対頻度によって、円のサイズが決定されます。 |
品詞についての詳細はこちらを参照してください。
詳細
グラフについて
Jaccard 係数の高い単語対ほど、太いエッジで結ばれます。エッジの長さやノード間の距離は意味を持ちません。
Jaccard 係数
文単位で共起の頻度を数え、Jaccard 係数によって共起の強度を計算します。 共起している割合が高ければ高いほど、その単語間の Jaccard 係数は大きくなります。
具体的には、二つの単語 \( g_1, g_2 \) に対して、それぞれが含まれる文全体の集合を \( A_1, A_2 \) とするとき、単語間の Jaccard 係数は
\[ \text{Jac} (g_1, g_2) = \frac{| A_1 \cap A_2 |}{| A_1 \cup A_2 |} \]
で計算されます。
サブグラフ検出(community detection)
一般のグラフには community と呼ばれる構造があり、community 内部のエッジの重みが大きくなるように、グラフを複数の communities へ分割する問題が知られています。 この問題は community detection、あるいは KH Coder では サブグラフ検出 と呼ばれています。
LiTA においては、Blondel らによる Louvain 法に基づいて、近似的に community detection を行います。 なお、ループの終了条件を保証するため、および効率化のため、次の変更を施しています:
- 「Modularity を極大化し、singlet community からなる新たなグラフを出力する」操作を最大 \( 100 \) 回まで繰り返すようにしました。元々は、新たなグラフが操作前と一致するまで終了しません。
- 「あるノードに対して、modularity が最大となるような隣接 community を見つける」操作を最大 \( 100 n \) 回まで繰り返すようにしました。ただし、\( n \) はグラフのノード数を表します。元々は、すべてのノードにおいて自身の community が modularity 最大のときに限り、終了します。
これらの仕様は予告なく変更される可能性があります。
KWIC
概要
KWIC (keyword in context) を表示します。以下のパラメータがあります。
パラメータ | 初期値 | 説明 |
---|---|---|
単語列 | 単語列を空白またはタブ区切りで指定します。 | |
ウィンドウ幅 | 5 | 前後の単語数を指定します。 |
品詞フィルター | 内容語のみ表示 | 特定の品詞のみを表示、もしくは除外します。 |
品詞についての詳細はこちらを参照してください。
時系列ヒストグラム
概要
ドキュメントの日付情報を設定している場合、単語の出現頻度を時系列ヒストグラムで表示します。以下のパラメータがあります。
パラメータ | 初期値 | 説明 |
---|---|---|
単語列 | 単語列を空白またはタブ区切りで指定します。 | |
間隔 | 年別 | 時系列の時間間隔を、年別・月別・日別から選択できます。 |
日付の設定については時間・日付についてを参照してください。
LiTA を始める
ファイルをアップロードする
ログイン画面が表示されたら、利用規約をよく確認してからログインします。ログインには Google のアカウントが使えます。
ログインしたらホーム画面へ移動します。
ホーム画面では、[詳細] ボタンを押すことで利用規約、マニュアルとサンプルへのリンクが表示されます。
[トークナイザーの選択] では、新しく作成するプロジェクトで使用されるトークナイザーを選択できます。現在は日本語(KyTea)のみ選択可能です。
[サンプルファイルダウンロード] からは、青空文庫に収録された寺田寅彦の著書のうち、無作為に選んだ24件をダウンロードできます。 このファイルは、[ファイルを選択 & アップロード] からアップロードして試すこともできます。
[新規プロジェクト名を入力] では新しく作成するプロジェクトの名前を入力します。名前は最大で50文字までです。 省略した場合は「新規プロジェクト」という名前で作成されます。
[ファイルを選択 & アップロード] を押してファイルを選択すると、自動でアップロードされインデックス作成が始まります。 ファイルのフォーマットに関してはアップロードするファイルについてを確認してください。
※ プロジェクトが利用可能になるまで、
- アップロード
- インデックス作成
の二工程があります。アップロード中に中断(ページをリロード、ブラウザを閉じる等)した場合はプロジェクトを削除する必要があります。削除方法については下記に従ってください。インデックス作成中はページのリロード等をしても、プロジェクトを削除する必要はありません。
※ファイルサイズが大きい場合、これらの工程には時間がかかります。目安として、
- 10 MB → 数分
- 100 MB → 数十分
となります。
ファイルの選択後、次のような画面が表示されます。
プロジェクト名の横には、アップロード中であればアップロードしたバイト数が、インデックス中であれば [インデックス作成中] の文字が表示されます。
アップロードおよびインデックス作成が完了したら、プロジェクトの詳細ページへ遷移します。
ファイルを追加でアップロードする
プロジェクトリストの をクリックすると、追加アップロードのページへ移動します。
そこでファイルを選択して、[ファイルをアップロード] でアップロードできます。 この場合でも上記と同じく、アップロードの中断はできません。途中でアップロードを止めてしまったときはプロジェクトの削除が必要になります。 インデックス作成中(アップロード完了後)は自由にページのリロード等が可能です。
エラーが発生したら
アップロードしたファイルのフォーマットが正しくない場合、エラーログのダウンロードリンクが表示されます。
アップロードするファイルについてをよく読み、ファイルの中身を修正してから再アップロードします。再アップロードのためには、下記に従ってプロジェクトを削除し、上の手順を繰り返します。
ファイルのフォーマットが正しいにも関わらずエラーが発生したときや、その他のエラーに遭遇したときは、しばらく時間を空けてからもう一度お試しください。 それでも改善しない場合は Linfer まで連絡をお願いします。
プロジェクトを削除する
プロジェクトリストのゴミ箱アイコン をクリックすると、プロジェクトを削除するための確認が表示されます。
[削除] をクリックするとプロジェクトが削除されます。
※削除されたプロジェクトは復元できません。慎重に操作してください。
アップロードするファイルについて
アップロードできるファイルは、次のうちいずれかです。
- CSV ファイル(
.csv
) - JSON ファイル(
.json
) - テクストファイル(
.txt
、.text
)
複数のファイルをアップロードすることも可能ですが、以下の注意点を確認してください。
文字コード
対応している文字コードは UTF-8、SHIFT-JIS、UTF-16、EUC-JP、ISO-2022-JP です。 どれでも機能に差はありませんが、UTF-8 が最も推奨されます。
なお、Excel でデータを作成される場合は、「CSV(コンマ区切り)」(Shift JIS) を選択してください。 「CSV UTF-8(コンマ区切り)」(UTF-8 BOM 付き) の形式は現在アップロードできません。
複数ファイルをアップロードする際の注意点
複数のファイルをアップロード場合、すべてのファイルのスキーマを合わせる必要があります。 スキーマとは、「どのメタデータ(タイトル、日付、著者など)を持っているか」という情報のことで、プロジェクトごとに一つのスキーマがあります。
LiTA では一つめのファイルを読み込むときに自動でスキーマを決定しますが、そのスキーマと整合しないファイルをアップロードすることはできません。 すべてテクストファイルであれば問題ありませんが、CSV ファイルとテクストファイルが混ざっていたり、CSV ファイルが複数ある場合には注意してください。 どのようにスキーマが決定されるかについては、ファイル形式の詳細以下の各項を参照してください。
ファイル形式の詳細
スキーマは id
、body
とその他のメタデータから構成されます。
言い換えれば、各ドキュメントは必ず ID と本文を一つ持ち、それ以外のメタデータは任意です。ただし、メタデータはすべてのドキュメントで共通でなければなりません。
ID はすべてのドキュメントで一意となるよう必要があります。複数のファイルに同じ ID が含まれないよう注意してください。
たとえば
{
id: 1,
body: テスト1,
date: 2022-01-01,
},
{
id: 2,
body: テスト2,
date: 2022-01-02,
}
であればアップロードできますが(メタデータのスキーマが等しい)、
{
id: 1,
body: テスト1,
date: 2022-01-01,
},
{
id: 2,
body: テスト2,
}
はアップロードできません(ID 1 のメタデータには date
があるが、ID 2 には無い)。
以下の例は ID の重複があり、正しく動作しない恐れがあります。
{
id: 1,
body: テスト1,
date: 2022-01-01,
},
{
id: 1,
body: テスト2,
date: 2022-01-02,
}
CSV ファイル
CSV ファイルの場合、ファイルの一行目にヘッダ行を付けてください。Excel などでは自動で付けられることもあります。 たとえば
id,body,date,author
1,テスト1,2022-01-01,John Doe
2,テスト2,2022-01-02,John Doe
3,テスト3,2022-01-02,Jane Doe
という CSV ファイルであれば、id
、body
、date
、author
という4つのメタデータを持ちます。
メタデータの順番は任意ですが、必ず id
と body
を入れてください。
また実装の都合上、title = id
として扱われます。
したがって、メタデータに title
を含めたい場合は別の名前のフィールドにしてください。
この仕様は今後変わる可能性があります。
JSON ファイル
JSON ファイルの中身は、ドキュメントの配列を表す JSON になります。
ダブルクォーテーション("
)を忘れないようにしてください。
メタデータについては、CSV ファイルと同様の制約を受けます。詳しくは CSV ファイルの項を参照してください。
例:
[
{
"id": "1",
"body": "テスト1",
"date": "2022-01-01"
},
{
"id": "1",
"body": "テスト2",
"date": "2022-01-02"
}
]
テクストファイル
テクストファイルの場合、ファイル名がそのまま id
となり、ファイルの中身が body
となります。
それ以外のメタデータは存在しません。
時間・日付について
LDA の時系列表示や時系列ヒストグラムなど、LiTA の一部の機能には時間情報を利用するものがあります。そのような機能を使用する場合は、date
というメタデータが必須です。メタデータについてはこちらを参照してください。
将来的に date
以外のメタデータも指定できるようになりますが、現時点で実装時期は未定です。
これらの機能を使用する際の date
のフォーマットは西暦で yyyy-mm-dd
となっています。
例:1990-01-10
。
現在、日付より細かい時間単位(時・分など)を扱う機能はありません。
品詞について
品詞の種類は以下の通りです。
内容語:
- 名詞
- 動詞
- 接尾辞
- 形容詞
- 代名詞
- 副詞
- 形状詞
- 連体詞
- 接頭辞
- 接続詞
- 感動詞
機能語:
- 助詞
- 補助記号
- 語尾
- 助動詞
- URL
- 記号
- 空白
- 言いよどみ
- 英単語