wordnetのやつをコマンドラインからいろいろ出来るように〜
所要で簡単に類似度とか見たかったので、
-sでsynsetの表示、-dで定義表示、-eで上位語表示、-oで下位語表示、-tで深度、-lで類似度を表示できるようにしただけです。
参考にしたサイト様
自然言語処理 :: 自然言語処理ツールNLTK、WordNetを利用して単語間類似度を算出するには
#!/usr/bin/python3
# coding: utf-8
#import jp_wordnet as JPWN
from nltk.corpus.reader.wordnet import WordNetCorpusReader
import nltk
from nltk.corpus import wordnet as wn
import os
import sys
from optparse import OptionParser
parser = OptionParser()
#https://pythonprogramming.net/wordnet-nltk-tutorial/
#http://www.welearn.jp/nlp/wordnet_similarity_among_words.html
#↓wup_simiの説明
#http://www.anlp.jp/proceedings/annual_meeting/2012/pdf_dir/P1-8.pdfprint(wn.synsets("newspaper"))
#wordnetの関数 http://www.nltk.org/howto/wordnet.html
parser.add_option(
"-s", "--syn",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="synsetの表示"
)
parser.add_option(
"-d", "--definition",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="定義の表示"
)
parser.add_option(
"-e", "--hypernym",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="上位語"
)
parser.add_option(
"-o", "--hyponym",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="下位語"
)
parser.add_option(
"-t", "--depth",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="深度"
)
parser.add_option(
"-l", "--similarity",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="類似度"
)
(options, args) = parser.parse_args()
if options.syn == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
print(syn)
if options.definition == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
print(syn.definition())
if options.hypernym == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
print(syn.hypernyms())
if options.hyponym == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
#下位語
print(syn.hyponyms())
if options.depth == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
#深度
print(syn.min_depth())
if options.similarity == True:
input_char = input("文字列をください。")
input_char2 = input("もうひとつ文字列をください。")
for syn in wn.synsets(input_char):
print("----")
print (syn)
for syn2 in wn.synsets(input_char2):
print("--------")
print(syn2)
print(syn.path_similarity(syn2))
#同じものだと1になる
#apple1 = wn.synset('apple.n.01')
#apple2 = wn.synset('apple.n.01')
#print(apple1.path_similarity(apple2))
#print(syn.wup_similarity(syn2))
# coding: utf-8
#import jp_wordnet as JPWN
from nltk.corpus.reader.wordnet import WordNetCorpusReader
import nltk
from nltk.corpus import wordnet as wn
import os
import sys
from optparse import OptionParser
parser = OptionParser()
#https://pythonprogramming.net/wordnet-nltk-tutorial/
#http://www.welearn.jp/nlp/wordnet_similarity_among_words.html
#↓wup_simiの説明
#http://www.anlp.jp/proceedings/annual_meeting/2012/pdf_dir/P1-8.pdfprint(wn.synsets("newspaper"))
#wordnetの関数 http://www.nltk.org/howto/wordnet.html
parser.add_option(
"-s", "--syn",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="synsetの表示"
)
parser.add_option(
"-d", "--definition",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="定義の表示"
)
parser.add_option(
"-e", "--hypernym",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="上位語"
)
parser.add_option(
"-o", "--hyponym",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="下位語"
)
parser.add_option(
"-t", "--depth",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="深度"
)
parser.add_option(
"-l", "--similarity",
action="store_true", # Trueを保存
# store_falseならFalseを保存
default=False,
help="類似度"
)
(options, args) = parser.parse_args()
if options.syn == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
print(syn)
if options.definition == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
print(syn.definition())
if options.hypernym == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
print(syn.hypernyms())
if options.hyponym == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
#下位語
print(syn.hyponyms())
if options.depth == True:
input_char = input("文字列をください。")
for syn in wn.synsets(input_char):
#深度
print(syn.min_depth())
if options.similarity == True:
input_char = input("文字列をください。")
input_char2 = input("もうひとつ文字列をください。")
for syn in wn.synsets(input_char):
print("----")
print (syn)
for syn2 in wn.synsets(input_char2):
print("--------")
print(syn2)
print(syn.path_similarity(syn2))
#同じものだと1になる
#apple1 = wn.synset('apple.n.01')
#apple2 = wn.synset('apple.n.01')
#print(apple1.path_similarity(apple2))
#print(syn.wup_similarity(syn2))