wordnet
#corpus
conceptnetがメインストリームかも @2019
#dictionary
公式ぽいもの
The Global WordNet Association
Open Multilingual Wordnet
Open Multilingual Wordnet 1.2
NLTKでの利用方法 #nltk
corpusのdownload
code:python
import nltk
nltk.download('omw')
nltk.download('wordnet')
from nltk.corpus import wordnet as wn
とすると、downloadされる
code: cmd
!head /root/nltk_data/corpora/omw/jpn/wn-data-jpn.tab
!wc -l /root/nltk_data/corpora/omw/jpn/wn-data-jpn.tab
>>>>
# Japanese Wordnet jpn http://nlpwww.nict.go.jp/wn-ja/ wordnet
00001740-a jpn:lemma 可能
00001740-n jpn:lemma 実体
00001740-r jpn:lemma アカペラで
00001740-v jpn:lemma 吐く
00001740-v jpn:lemma 呼吸+する
00001740-v jpn:lemma 息づく
152300 /root/nltk_data/corpora/omw/jpn/wn-data-jpn.tab
152300文字
Open Multilingual Wordnet
158,069
152
Dive into WordNet with NLTK – Parrot Prediction – Medium
NLTKを使った, wordnetの情報の取り出し例。
日本語も(ある程度?)いける。概念辞書なので
synset(概念)にしたあとは、synsetベースでやる。
synsetの定義と例の日本語は、上記にある。NLTKには直接はいってないけど、synset のidでmappignすればよい
python - NLTK WordNet verb hierarchy - Stack Overflow
名詞は、上位語(hypernyms)をたどると、 'entiry' になるが、動詞はたくさん。550くらいある。下の数字はその木のリーフ(語)の数。
code:python
from collections import Counter
from itertools import chain
root_hypernyms_of_verbs = Counter(chain(*ss.root_hypernyms() for ss in wn.all_synsets(pos='v')))
root_hypernyms_of_verbs.most_common(10)
"""
[(Synset('change.v.01'), 1704),
(Synset('change.v.02'), 1295),
(Synset('act.v.01'), 1083),
(Synset('move.v.02'), 1027),
(Synset('make.v.03'), 659),
(Synset('travel.v.01'), 526),
(Synset('think.v.03'), 451),
(Synset('transfer.v.05'), 420),
(Synset('move.v.03'), 329),
(Synset('connect.v.01'), 262)]"""
以下は、(結果として)古い情報のサーチとなってしまったかも。
=========================================================================================
#nlp
機械学習の時代に効用がどれくらい高いかわからないけど、一つの情報としてもっておくのはよさそう。
言葉の整理の仕方とかでも参考になるはず。整理した分が脳内に持てる量。
日本語 Wordnet
日本語ワードネットに収録されたsynset数や単語数、語義数は次のとおりです。
57,238 概念 (synset数)
93,834 words 語
158058 語義 (synsetと単語のペア)
135,692 定義文
48,276 例文
日本語Wordnetのデータ構造を理解する - omotenashi-mind
(データ用テーブル)
№ テーブル名 説明
1 word 日本語および英語の単語情報
2 synset 単語の持つ概念をまとめたもの
3 sense 単語と概念の紐付けを管理する
4 synlink synset間の関係性を管理する
5 ancestor synset間の関係性の深さ(世代数)を管理する
6 xlink synsetと上位オントロジーSUMO(※)との関係性を管理する
7 variant 単語の特殊な読み方を管理するためのテーブルと思われる。日本語Wordnetではデータ無し。
中の カラムの説明がないみたい。これは、英語版で調べるしかない?
ここからdownloadして、
http://compling.hss.ntu.edu.sg/wnja/jpn/downloads.html
SQLite3で十分なのだけど、cloud functionで引けるようにしたい。
が、Google Cloud Functionsでの sqlite3のファイルの置き方がわからないので、gcpの cloud sqlのmysqlにいれる。
Google Cloud Storageにおいて読み込むのだと遅そう。
sqlite dump -> mysql dump. 下のサイトでやってくれる。 5分くらいで出来て、レスポンスが来た。
$ curl] -F files[]=@localfilepath .....
Convert SQLite to MySQL online - RebaseData
#curl
それを、cloud sql の mysqlインスタンスに入れる。dumpfileにはDB名がないので、importする際にDB名を指定して入れる。
一番安いので月1000円弱。つかわなくなったら、dumpしておいて インスタンス消せば良い。
GCP CloudShell
cloud shell上のconsoleで見てたけど、イメージわかないので、phpmyadminを入れる。
GAE のstandard PHPで簡単にいけた。
Using phpMyAdmin with Cloud SQL on App Engine Standard Environment  |  Cloud SQL for MySQL  |  Google Cloud
gaeは、認証が楽。 adminつけておけば良い。
ER図も欲しいけど。。ツールは転がってそう。
あとは、類語や概念の上下をどう図示するのが良いかという話になる。
weblioの例
類語辞典・シソーラス・対義語 - Weblio辞書
この scrapboxもそうだけど、どう知識をネットワークしておくと、楽しいか?という話。
数学より、理解の積み上げがし易い。
参考
Wordnetの中をのぞいてみた - 唯物是真 @Scaled_Wurm
【API】日本語WordNetの全内容にアクセスできるWebAPIを公開した | Apitore blog