日语高级NLP应用开发平台
项目描述
pyknp事件图
EventGraph是日语高级 NLP 应用程序的开发平台。EventGraph的核心概念是事件,一种与谓词-参数结构密切相关但更面向应用的语言信息单元。事件基于它们的句法和语义关系相互链接。
要求
- Python 3.6 或更高版本
- pyknp
- 图形可视化
安装
要安装 pyknp-eventgraph,请使用pip
.
$ pip install pyknp-eventgraph
快速浏览
第 1 步:创建 EventGraph
EventGraph 建立在以 KNP 格式给出的语言分析之上。
# Add imports.
from pyknp import KNP
from pyknp_eventgraph import EventGraph
# Parse a document.
document = ['彼女は海外勤務が長いので、英語がうまいに違いない。', '私はそう確信していた。']
knp = KNP()
analysis = [knp.parse(sentence) for sentence in document]
# Create an EventGraph.
evg = EventGraph.build(analysis)
print(evg) # <EventGraph, #sentences: 2, #events: 3, #relations: 1>
第 2 步:提取信息
用户可以通过一个简单的界面获取有关语言分析的各种信息。
步骤 2.1:句子
# Extract sentences.
sentences = evg.sentences
print(sentences)
# [
# <Sentence, sid: 1, ssid: 0, surf: 彼女は海外勤務が長いので、英語がうまいに違いない。>,
# <Sentence, sid: 2, ssid: 1, surf: 私はそう確信していた。>
# ]
# Convert a sentence into various forms.
sentence = evg.sentences[0]
print(sentence.surf) # 彼女は海外勤務が長いので、英語がうまいに違いない。
print(sentence.mrphs) # 彼女 は 海外 勤務 が 長い ので 、 英語 が うまい に 違いない 。
print(sentence.reps) # 彼女/かのじょ は/は 海外/かいがい 勤務/きんむ が/が 長い/ながい ので/ので 、/、 英語/えいご が/が 上手い/うまい に/に 違い無い/ちがいない 。/。
步骤 2.2:事件
# Extract events.
events = evg.events
print(events)
# [
# <Event, evid: 0, surf: 海外勤務が長いので、>,
# <Event, evid: 1, surf: 彼女は英語がうまいに違いない。>,
# <Event, evid: 2, surf: 私はそう確信していた。>
# ]
# Convert an event into various forms.
event = evg.events[0]
print(event.surf) # 海外勤務が長いので、
print(event.mrphs) # 海外 勤務 が 長い ので 、
print(event.normalized_mrphs) # 海外 勤務 が 長い
print(event.reps) # 海外/かいがい 勤務/きんむ が/が 長い/ながい ので/ので 、/、
print(event.normalized_reps) # 海外/かいがい 勤務/きんむ が/が 長い/ながい
print(event.content_rep_list) # ['海外/かいがい', '勤務/きんむ', '長い/ながい']
# Extract an event's PAS.
pas = event.pas
print(pas) # <PAS, predicate: 長い/ながい, arguments: {ガ: 勤務/きんむ}>
print(pas.predicate) # <Predicate, type: 形, surf: 長い>
print(pas.arguments) # defaultdict(<class 'list'>, {'ガ': [<Argument, case: ガ, surf: 勤務が>]})
# Extract an event's features.
features = event.features
print(features) # <Features, modality: None, tense: 非過去, negation: False, state: 状態述語, complement: False>
步骤 2.3:事件到事件的关系
# Extract event-to-event relations.
relations = evg.relations
print(relations) # [<Relation, label: 原因・理由, modifier_evid: 0, head_evid: 1>]
# Take a closer look at an event-to-event relation
relation = relations[0]
print(relation.label) # 原因・理由
print(relation.surf) # ので
print(relation.modifier) # <Event, evid: 0, surf: 海外勤務が長いので、>
print(relation.head) # <Event, evid: 1, surf: 彼女は英語がうまいに違いない。>
第 3 步:保存/加载 EventGraph
用户可以通过将 EventGraph 序列化为 JSON 对象来保存和加载它。
# Save an EventGraph as a JSON file.
evg.save('evg.json')
# Load an EventGraph from a JSON file.
with open('evg.json') as f:
evg = EventGraph.load(f)
第 4 步:可视化 EventGraph
用户可以使用graphviz可视化 EventGraph 。
from pyknp_eventgraph import make_image
make_image(evg, 'evg.svg') # Currently, only supports 'svg'.
高级用法
合并修饰符
通过将修改事件合并到被修改对象,用户可以构建一个更大的信息单元。
from pyknp import KNP
from pyknp_eventgraph import EventGraph
document = ['もっととろみが持続する作り方をして欲しい。']
knp = KNP()
analysis = [knp.parse(sentence) for sentence in document]
evg = EventGraph.build(analysis)
print(evg) # <EventGraph, #sentences: 1, #events: 2, #relations: 1>
# Investigate the relation.
relation = evg.relations[0]
print(relation) # <Relation, label: 連体修飾, modifier_evid: 0, head_evid: 1>
print(relation.modifier) # <Event, evid: 0, surf: もっととろみが持続する>
print(relation.head) # <Event, evid: 1, surf: 作り方をして欲しい。>
# To merge modifier events, enable `include_modifiers`.
print(relation.head.surf) # 作り方をして欲しい。
print(relation.head.surf_(include_modifiers=True)) # もっととろみが持続する作り方をして欲しい。
# Other formats also support `include_modifiers`.
print(relation.head.mrphs_(include_modifiers=True)) # もっと とろみ が 持続 する 作り 方 を して 欲しい 。
print(relation.head.normalized_mrphs_(include_modifiers=True)) # もっと とろみ が 持続 する 作り 方 を して 欲しい
二进制序列化
当 EventGraph 以 JSON 格式序列化时,它将失去一些功能,包括访问 KNP 对象和修改器合并。要保留全部功能,请使用 Python 的 pickle 实用程序进行序列化。
# Save an EventGraph using Python's pickle utility.
evg.save('evg.pkl', binary=True)
# Load an EventGraph using Python's pickle utility.
with open('evg.pkl', 'rb') as f:
evg_ = EventGraph.load(f, binary=True)
命令行界面
事件图构建
$ echo '彼女は海外勤務が長いので、英語がうまいに違いない。' | jumanpp | knp -tab | evg -o example-eventgraph.json
事件图可视化
$ evgviz example-eventgraph.json example-eventgraph.svg
文件
https://pyknp-eventgraph.readthedocs.io/en/latest/
作者
- 京都大学黑桥川原研究所。
- 联系人@nlp.ist.i.kyoto-u.ac.jp
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
pyknp-eventgraph-6.2.5.tar.gz
(29.8 kB
查看哈希)
内置分布
pyknp_eventgraph-6.2.5-py3-none-any.whl
(34.8 kB
查看哈希)
关
pyknp_eventgraph -6.2.5-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ca788301171c8c851e9c0248cb49ed0cb9dd3241a106fd31599133bec3d039ea |
|
MD5 | 0b718d80d4b4d7fbb3084a90b5acb552 |
|
布莱克2-256 | a151579306fe34725c6b01a46ec03f8707e905213868ff1c34a02e74db3da5a9 |