類義語フリーの辞書
参考ページ
pysqlite3 インストール
pip install pysqlite3
どんなテーブルがあるか
import sqlite3
conn = sqlite3.connect("wnjpn.db")
cur = conn.execute("select name from sqlite_master where type='table'")
for row in cur:
print(row)
結果
('link_def',)
('synset_def',)
('synset_ex',)
('synset',)
('synlink',)
('ancestor',)
('sense',)
('word',)
('variant',)
('xlink',)
関連テーブルの構造調査
調査コード
cur = conn.execute("select * from <table_name> limit 10")
for row in cur:
print(row)
# Wordnetデータに含まれるカラムの確認
cur = conn.execute("PRAGMA TABLE_INFO(<table_name>)")
for row in cur:
print(row)
wordテーブルの構造
列名
(0, 'wordid', 'integer', 0, None, 1)
(1, 'lang', 'text', 0, None, 0)
(2, 'lemma', 'text', 0, None, 0)
(3, 'pron', 'text', 0, None, 0)
(4, 'pos', 'text', 0, None, 0)
データ
(1, 'eng', 'expletive', None, 'n')
(2, 'eng', 'measles', None, 'n')
(3, 'eng', 'contras', None, 'n')
(4, 'eng', 'beef_man', None, 'n')
(5, 'eng', 'dwelling', None, 'n')
(6, 'eng', 'acetum', None, 'n')
(7, 'eng', 'mount_carmel', None, 'n')
(8, 'eng', 'class_taxopsida', None, 'n')
(9, 'eng', 'vascular_ray', None, 'n')
(10, 'eng', 'genus_salamandra', None, 'n')
senseテーブルの構造
列名
(0, 'synset', 'text', 0, None, 0)
(1, 'wordid', 'integer', 0, None, 0)
(2, 'lang', 'text', 0, None, 0)
(3, 'rank', 'text', 0, None, 0)
(4, 'lexid', 'integer', 0, None, 0)
(5, 'freq', 'integer', 0, None, 0)
(6, 'src', 'text', 0, None, 0)
データ
('07125096-n', 1, 'eng', '0', 1, 1, 'eng-30')
('07126228-n', 1, 'eng', '0', 2, 0, 'eng-30')
('14123044-n', 2, 'eng', '0', 1, 0, 'eng-30')
('08030185-n', 3, 'eng', '0', 1, 0, 'eng-30')
('09902017-n', 4, 'eng', '0', 1, 1, 'eng-30')
('03259505-n', 5, 'eng', '0', 1, 11, 'eng-30')
('14599641-n', 6, 'eng', '0', 1, 0, 'eng-30')
('07828987-n', 6, 'eng', '0', 2, 0, 'eng-30')
('09361816-n', 7, 'eng', '0', 1, 0, 'eng-30')
('11660537-n', 8, 'eng', '0', 1, 0, 'eng-30')
synsetテーブルの構造
列名
(0, 'synset', 'text', 0, None, 0)
(1, 'pos', 'text', 0, None, 0)
(2, 'name', 'text', 0, None, 0)
(3, 'src', 'text', 0, None, 0)
データ
('07125096-n', 'n', 'expletive', 'eng30')
('07126228-n', 'n', 'expletive', 'eng30')
('14123044-n', 'n', 'measles', 'eng30')
('08030185-n', 'n', 'contras', 'eng30')
('09902017-n', 'n', 'beef_man', 'eng30')
('03259505-n', 'n', 'dwelling', 'eng30')
('14599641-n', 'n', 'acetum', 'eng30')
('07828987-n', 'n', 'acetum', 'eng30')
('09361816-n', 'n', 'mount_carmel', 'eng30')
('11660537-n', 'n', 'class_taxopsida', 'eng30')
類義語取得手順
- wordテーブルからword_id取得
ex)『パソコン』のword_id:190168 - senseテーブルからword_idと一致するもsynsetを取得
ex)['03918480-n'] - synsetテーブルから上記synsetと一致するをnameを取得
※複数なので配列に保存
ex)pc