中文ストップワード方式による用語抽出

モジュールをimport

In [1]:
import termextract.chinese_plaintext
import termextract.core

from pprint import pprint # このサンプルでの処理結果の整形表示のため

中文のプレインテキストを読み込み

テキストはWikipediaの「人工智能」記事( https://zh.wikipedia.org/wiki/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD )から抜粋

In [2]:
f = open("chi_sample_s.txt", "r", encoding="utf-8")
text = f.read()
f.close
print(text)
人工智能(英语:Artificial Intelligence, AI)亦稱機器智能,是指由人工製造出來的系統所表現出來的智能。通常人工智能是指通過普通電腦實現的智能。該詞同時也指研究這樣的智能系統是否能夠實現,以及如何實現的科學領域。

一般教材中的定义领域是“智能主体(intelligent agent)的研究与设计”[1],智能主体是指一个可以观察周遭环境并作出行动以达致目标的系统。[2]约翰·麦卡锡于1955年的定义是[3]「制造智能机器的科学与工程。」[4]

人工智能的研究是高度技术性和专业的,各分支领域都是深入且各不相通的,因而涉及範圍極廣。[5]

人工智能的研究可以分为几个技术问题。其分支领域主要集中在解决具体问题,其中之一是,如何使用各种不同的工具完成特定的应用程序。AI的核心问题包括推理、知识、规划、学习、交流、感知、移动和操作物体的能力等。[6]強人工智能目前仍然是该领域的长远目标。[7]目前比较流行的方法包括统计方法,计算智能和传统意义的AI。目前有大量的工具应用了人工智能,其中包括搜索和数学优化、逻辑推演。而基於仿生學、認知心理學,以及基于概率论和经济学的演算法等等也在逐步探索當中。

複合語抽出処理(ディクショナリとリストの両方可)

In [3]:
frequency = termextract.chinese_plaintext.cmp_noun_dict(text)
pprint(frequency)

#term_list = termextract.chinese_plaintext.cmp_noun_list(text)
#pprint(term_list)
{'1': 1,
 '1955': 1,
 '2': 1,
 '3': 1,
 '4': 1,
 '5': 1,
 '6': 1,
 '7': 1,
 'AI': 2,
 'Artificial': 1,
 'Intelligence': 1,
 'agent': 1,
 'intelligent': 1,
 '一': 1,
 '一 般 教 材 中 的 定 义 领 域': 1,
 '中': 1,
 '中 包 括 搜 索 和 数 学 优 化': 1,
 '主 体': 2,
 '交 流': 1,
 '人 工 智': 4,
 '人 工 製 造 出 來 的 系 統 所 表 現 出 來 的 智': 1,
 '作 出 行 动': 1,
 '使': 1,
 '分': 1,
 '分 支 领 域 主 要 集 中': 1,
 '制 造 智': 1,
 '力': 1,
 '各': 1,
 '各 分 支 领 域': 1,
 '各 种': 1,
 '同 的 工 具 完 成 特 定 的 应': 1,
 '否': 1,
 '和 传 统 意 义 的 AI': 1,
 '基': 1,
 '基 於 仿 生 學': 1,
 '夠 實 現': 1,
 '大 量 的 工 具 应': 1,
 '如': 2,
 '学 习': 1,
 '實 現 的 科 學 領 域': 1,
 '年 的 定 义': 1,
 '強 人 工 智': 1,
 '感 知': 1,
 '技 术 问 题': 1,
 '指': 1,
 '指 一': 1,
 '指 研 究 這 樣 的 智': 1,
 '指 通 過 普 通 電 腦 實 現 的 智': 1,
 '探 索 當 中': 1,
 '智': 2,
 '机 器 的 科 学 与 工 程': 1,
 '概 率 论 和 经 济 学 的 演 算 法': 1,
 '法': 1,
 '法 包 括 统 计': 1,
 '流 行 的': 1,
 '涉': 1,
 '深 入': 1,
 '环 境': 1,
 '的 核 心 问 题 包 括 推 理': 1,
 '的 研 究': 2,
 '的 研 究 与 设 计': 1,
 '目 前': 2,
 '目 前 仍': 1,
 '相 通 的': 1,
 '知 识': 1,
 '移 动 和 操 作 物 体 的': 1,
 '程 序': 1,
 '稱 機 器 智': 1,
 '範 圍 極 廣': 1,
 '系 統': 1,
 '约 翰 · 麦 卡 锡': 1,
 '英 语': 1,
 '观 察 周': 1,
 '规 划': 1,
 '解 决 具 体 问 题': 1,
 '該 詞 同 時': 1,
 '認 知 心 理 學': 1,
 '计 算 智': 1,
 '该 领 域 的 长 远 目 标': 1,
 '达 致 目 标 的 系 统': 1,
 '通 常 人 工 智': 1,
 '逻 辑 推 演': 1,
 '高 度 技 术 性 和 专 业 的': 1}

FrequencyからLRを生成する

In [5]:
lr = termextract.core.score_lr(
    frequency,
    ignore_words=termextract.chinese_plaintext.IGNORE_WORDS,
    lr_mode=1, average_rate=1)
pprint(lr)
{'1': 1.0,
 '1955': 1.0,
 '2': 1.0,
 '3': 1.0,
 '4': 1.0,
 '5': 1.0,
 '6': 1.0,
 '7': 1.0,
 'AI': 1.4142135623730951,
 'Artificial': 1.0,
 'Intelligence': 1.0,
 'agent': 1.0,
 'intelligent': 1.0,
 '一': 2.0,
 '一 般 教 材 中 的 定 义 领 域': 2.6375259891320306,
 '中': 3.4641016151377544,
 '中 包 括 搜 索 和 数 学 优 化': 2.4688527287666537,
 '主 体': 2.990697562442441,
 '交 流': 1.681792830507429,
 '人 工 智': 5.791930306157641,
 '人 工 製 造 出 來 的 系 統 所 表 現 出 來 的 智': 2.903280920977001,
 '作 出 行 动': 2.7689921001973388,
 '使': 1.0,
 '分': 2.449489742783178,
 '分 支 领 域 主 要 集 中': 2.9733760783280316,
 '制 造 智': 2.4823859788012497,
 '力': 1.0,
 '各': 1.7320508075688772,
 '各 分 支 领 域': 3.0638870628004056,
 '各 种': 1.5650845800732873,
 '同 的 工 具 完 成 特 定 的 应': 2.385744277192346,
 '否': 1.0,
 '和 传 统 意 义 的 AI': 1.7385105064447572,
 '基': 1.4142135623730951,
 '基 於 仿 生 學': 2.0,
 '夠 實 現': 2.7981664143395273,
 '大 量 的 工 具 应': 2.4486481371521096,
 '如': 1.0,
 '学 习': 2.514866859365871,
 '實 現 的 科 學 領 域': 2.7248857796902555,
 '年 的 定 义': 2.1039790110172882,
 '強 人 工 智': 4.071423180968521,
 '感 知': 2.0597671439071177,
 '技 术 问 题': 3.01960729695421,
 '指': 2.0,
 '指 一': 2.0,
 '指 研 究 這 樣 的 智': 2.3121463911563183,
 '指 通 過 普 通 電 腦 實 現 的 智': 2.5416894015982607,
 '探 索 當 中': 2.3284355309217966,
 '智': 3.605551275463989,
 '机 器 的 科 学 与 工 程': 2.4390005499583545,
 '概 率 论 和 经 济 学 的 演 算 法': 1.9426649106425813,
 '法': 2.0,
 '法 包 括 统 计': 3.067349373677115,
 '流 行 的': 1.6983813295649528,
 '涉': 1.0,
 '深 入': 1.4142135623730951,
 '环 境': 1.4142135623730951,
 '的 核 心 问 题 包 括 推 理': 2.6111979064976274,
 '的 研 究': 2.305058100333494,
 '的 研 究 与 设 计': 1.9786024464679264,
 '目 前': 3.4641016151377544,
 '目 前 仍': 2.5697965868506505,
 '相 通 的': 1.7817974362806785,
 '知 识': 2.0597671439071177,
 '移 动 和 操 作 物 体 的': 1.7940757662635787,
 '程 序': 1.681792830507429,
 '稱 機 器 智': 2.3518492522700205,
 '範 圍 極 廣': 1.681792830507429,
 '系 統': 2.9129506302439405,
 '约 翰 · 麦 卡 锡': 1.7817974362806785,
 '英 语': 1.4142135623730951,
 '观 察 周': 1.5874010519681994,
 '规 划': 1.4142135623730951,
 '解 决 具 体 问 题': 2.7197876345754084,
 '該 詞 同 時': 1.7692284081334932,
 '認 知 心 理 學': 2.4494897427831783,
 '计 算 智': 2.981189058953174,
 '该 领 域 的 长 远 目 标': 2.437735828937092,
 '达 致 目 标 的 系 统': 2.3116374997264897,
 '通 常 人 工 智': 4.348224851405595,
 '逻 辑 推 演': 2.135184796196703,
 '高 度 技 术 性 和 专 业 的': 1.6983813295649528}

FrequencyとLRを組み合わせFLRの重要度を出す

In [6]:
term_imp = termextract.core.term_importance(frequency, lr)
pprint(term_imp)
{'1': 1.0,
 '1955': 1.0,
 '2': 1.0,
 '3': 1.0,
 '4': 1.0,
 '5': 1.0,
 '6': 1.0,
 '7': 1.0,
 'AI': 2.8284271247461903,
 'Artificial': 1.0,
 'Intelligence': 1.0,
 'agent': 1.0,
 'intelligent': 1.0,
 '一': 2.0,
 '一 般 教 材 中 的 定 义 领 域': 2.6375259891320306,
 '中': 3.4641016151377544,
 '中 包 括 搜 索 和 数 学 优 化': 2.4688527287666537,
 '主 体': 5.981395124884882,
 '交 流': 1.681792830507429,
 '人 工 智': 23.167721224630565,
 '人 工 製 造 出 來 的 系 統 所 表 現 出 來 的 智': 2.903280920977001,
 '作 出 行 动': 2.7689921001973388,
 '使': 1.0,
 '分': 2.449489742783178,
 '分 支 领 域 主 要 集 中': 2.9733760783280316,
 '制 造 智': 2.4823859788012497,
 '力': 1.0,
 '各': 1.7320508075688772,
 '各 分 支 领 域': 3.0638870628004056,
 '各 种': 1.5650845800732873,
 '同 的 工 具 完 成 特 定 的 应': 2.385744277192346,
 '否': 1.0,
 '和 传 统 意 义 的 AI': 1.7385105064447572,
 '基': 1.4142135623730951,
 '基 於 仿 生 學': 2.0,
 '夠 實 現': 2.7981664143395273,
 '大 量 的 工 具 应': 2.4486481371521096,
 '如': 2.0,
 '学 习': 2.514866859365871,
 '實 現 的 科 學 領 域': 2.7248857796902555,
 '年 的 定 义': 2.1039790110172882,
 '強 人 工 智': 4.071423180968521,
 '感 知': 2.0597671439071177,
 '技 术 问 题': 3.01960729695421,
 '指': 2.0,
 '指 一': 2.0,
 '指 研 究 這 樣 的 智': 2.3121463911563183,
 '指 通 過 普 通 電 腦 實 現 的 智': 2.5416894015982607,
 '探 索 當 中': 2.3284355309217966,
 '智': 7.211102550927978,
 '机 器 的 科 学 与 工 程': 2.4390005499583545,
 '概 率 论 和 经 济 学 的 演 算 法': 1.9426649106425813,
 '法': 2.0,
 '法 包 括 统 计': 3.067349373677115,
 '流 行 的': 1.6983813295649528,
 '涉': 1.0,
 '深 入': 1.4142135623730951,
 '环 境': 1.4142135623730951,
 '的 核 心 问 题 包 括 推 理': 2.6111979064976274,
 '的 研 究': 4.610116200666988,
 '的 研 究 与 设 计': 1.9786024464679264,
 '目 前': 6.928203230275509,
 '目 前 仍': 2.5697965868506505,
 '相 通 的': 1.7817974362806785,
 '知 识': 2.0597671439071177,
 '移 动 和 操 作 物 体 的': 1.7940757662635787,
 '程 序': 1.681792830507429,
 '稱 機 器 智': 2.3518492522700205,
 '範 圍 極 廣': 1.681792830507429,
 '系 統': 2.9129506302439405,
 '约 翰 · 麦 卡 锡': 1.7817974362806785,
 '英 语': 1.4142135623730951,
 '观 察 周': 1.5874010519681994,
 '规 划': 1.4142135623730951,
 '解 决 具 体 问 题': 2.7197876345754084,
 '該 詞 同 時': 1.7692284081334932,
 '認 知 心 理 學': 2.4494897427831783,
 '计 算 智': 2.981189058953174,
 '该 领 域 的 长 远 目 标': 2.437735828937092,
 '达 致 目 标 的 系 统': 2.3116374997264897,
 '通 常 人 工 智': 4.348224851405595,
 '逻 辑 推 演': 2.135184796196703,
 '高 度 技 术 性 和 专 业 的': 1.6983813295649528}

collectionsを使って重要度が高い順に表示

膠着言語の場合は、termextract.core.modify_agglutinative_lang()で整形をする

In [7]:
import collections
data_collection = collections.Counter(term_imp)
for cmp_noun, value in data_collection.most_common():
    print(termextract.core.modify_agglutinative_lang(cmp_noun), value, sep="\t")
人工智	23.167721224630565
智	7.211102550927978
目前	6.928203230275509
主体	5.981395124884882
的研究	4.610116200666988
通常人工智	4.348224851405595
強人工智	4.071423180968521
中	3.4641016151377544
法包括统计	3.067349373677115
各分支领域	3.0638870628004056
技术问题	3.01960729695421
计算智	2.981189058953174
分支领域主要集中	2.9733760783280316
系統	2.9129506302439405
人工製造出來的系統所表現出來的智	2.903280920977001
AI	2.8284271247461903
夠實現	2.7981664143395273
作出行动	2.7689921001973388
實現的科學領域	2.7248857796902555
解决具体问题	2.7197876345754084
一般教材中的定义领域	2.6375259891320306
的核心问题包括推理	2.6111979064976274
目前仍	2.5697965868506505
指通過普通電腦實現的智	2.5416894015982607
学习	2.514866859365871
制造智	2.4823859788012497
中包括搜索和数学优化	2.4688527287666537
認知心理學	2.4494897427831783
分	2.449489742783178
大量的工具应	2.4486481371521096
机器的科学与工程	2.4390005499583545
该领域的长远目标	2.437735828937092
同的工具完成特定的应	2.385744277192346
稱機器智	2.3518492522700205
探索當中	2.3284355309217966
指研究這樣的智	2.3121463911563183
达致目标的系统	2.3116374997264897
逻辑推演	2.135184796196703
年的定义	2.1039790110172882
感知	2.0597671439071177
知识	2.0597671439071177
一	2.0
指一	2.0
指	2.0
法	2.0
基於仿生學	2.0
如	2.0
的研究与设计	1.9786024464679264
概率论和经济学的演算法	1.9426649106425813
移动和操作物体的	1.7940757662635787
约翰·麦卡锡	1.7817974362806785
相通的	1.7817974362806785
該詞同時	1.7692284081334932
和传统意义的AI	1.7385105064447572
各	1.7320508075688772
流行的	1.6983813295649528
高度技术性和专业的	1.6983813295649528
交流	1.681792830507429
程序	1.681792830507429
範圍極廣	1.681792830507429
观察周	1.5874010519681994
各种	1.5650845800732873
英语	1.4142135623730951
基	1.4142135623730951
深入	1.4142135623730951
规划	1.4142135623730951
环境	1.4142135623730951
1955	1.0
否	1.0
1	1.0
2	1.0
intelligent	1.0
7	1.0
涉	1.0
3	1.0
5	1.0
使	1.0
agent	1.0
4	1.0
Intelligence	1.0
Artificial	1.0
6	1.0
力	1.0
In [ ]: