専門用語抽出Node.jsライブラリ termextact-nodejs
1.概要
テキストファイル(UTF-8, BOM無し)から、専門用語とその文中の重要度を出力するNode.js用のJavaScriptです。
Python版TermExtractをNode.js用に、日本語と英語の専門用語抽出の基本機能のみ移植しました。
連携する日本語形態素解析システムは、
kuromoji.js を使っています。
英語のPOSTaggerはNaturalの
POSTaggerです。
2.インストール
事前にNode.jsのインストールが必要です。
- termextract-nodejsのダウンロード
-
termextract-nodejiをダウンロード
- インストール
-
コマンドプロンプトからtermextract-nodejsの解凍フォルダ(ディレクトリ)で次のとおりインストールする
npm install .
3.サンプルスクリプトを使用する
実行する
termextract-nodejsに付属するtermex-ja.jsを使うことで、日本語テキストから専門用語を抽出できます。
termex-en.jsは英語テキスト用です。使い方は英文テキストファイルを対象とする以外termex-ja.js と同じです。
Usage
node termex-ja.js inputfile outputfile
-
- inputfile
- 処理対象の日本語テキスト(UTF-8)ファイル名
-
- outputfile
- 処理結果の出力ファイル名
- 省略時はoutputfile.txtに出力
スクリプトを改変・流用する
このtermex-ja.js及びtermex-en.jsは自由に改変・流用してお使いください。
内部では次の処理を順に実行してます。詳細は後述のライブラリ仕様をご覧ください。処理ごとに中間データを出力しますので、それを取り出し使用することも可能です。
cmp_noun_list = termextract.cmp_noun_list(tokenized_word);
frequency = termextract.list2key_value(cmp_noun_list);
score_lr = termextract.score_lr(frequency, termextract.IGNORE_WORDS, 1, 1);
term_importance = termextract.term_importance(frequency, score_lr);
score_lt_list = termextract.sort_by_importance(term_importance);
4.ライブラリ仕様
入出力に使用できる文字コードはUTF-8のみです。呼び出せる機能は以下のとおりになります。
サンプルスクリプトと合わせて説明をお読みください。
- cmp_noun_list(tokenized_word)
-
kuromoji.jsの日本語解析処理結果をもとに出現順の用語(単名詞スペース区切り)の配列を返す。
- tokenized_word 【必須】
-
kuromoji.jsによる日本語解析結果オブジェクト
- sort_by_importance(term_importance)
-
重要度順の用語リストを出力する。
- 各配列要素のキー
- cmp_nou: 用語(複合語)
- importance: 用語の処理テキスト中の重要度
- cmp_noun_list 【必須】
-
用語をキーに重要度を値としたKey-Value形式のオブジェクト
- IGNORE_WORDS
-
ライブラリが標準で用意する重要度計算の例外とする語のセットを得る。
後述のscore_lr()で使用する。
- score_lr(frequency, ignore_words, lr_mode, average_rate)
-
専門用語とそれを構成する単名詞の情報から重要度を計算する
- frequency 【必須】
-
複合語(単名詞の空白区切り)をキーに出現回数を値にしたディクショナリ
- ignore_words 【推奨】
-
- 重要度計算の例外とする語のセット。
- ライブラリ標準のIGNORE_WORDSの指定を推奨する。
- lr_mode
-
- 1のときはLRの計算において「延べ数」をとる。
- 2のときはLRの計算において「異なり数」をとる。
- デフォルトは「延べ数」をとる。
- average_rate
-
- 重要度計算においてLRとFrequencyの比重を調整する。
- 数値が小さいほうがFRの比重が大きい。
- デフォルトは1。
- term_importance(obj_1, obj_2, ..., obj_n)
-
複数の重要度情報を組み合わせ(乗算し)、複合語(単名詞の空白区切り)をキーに重要度を値にしたディクショナリを返す。
- obj_1~obj_n 【必須】
-
複合語(単名詞の空白区切り)をキーに重要度を値にしたKey-Valueオブジェクト。
- modify_agglutinative_lang(data)
-
半角スペースで区切られた単名詞を膠着言語(日本語等)向けに成形する
- data 【必須】
-
半角スペースで区切られた単名詞
5.Copyright
「専門用語自動抽出システム」は 東京大学情報基盤センター図書館電子化部門中川裕志教授および 横浜国立大学環境情報研究院森辰則助教授が共同で開発したものです。
termextract-nodejsは主として中川教授、 東京大学前田朗、 東京大学小島浩之講師の3者で検討を重ね、この「専門用語自動抽出システム」を改良したTermExtractをベースに、日本語・英語の専門用語自動抽出の基本機能をNode.js(JavaScript)に移植したものである。
6.免責
本プログラムの使用において生じたいかなる結果に関しても当方では一切責任を負わない。