読者です 読者をやめる 読者になる 読者になる

wordnetのやつをコマンドラインからいろいろ出来るように〜

 

所要で簡単に類似度とか見たかったので、

-sでsynsetの表示、-dで定義表示、-eで上位語表示、-oで下位語表示、-tで深度、-lで類似度を表示できるようにしただけです。

参考にしたサイト様

Python Programming Tutorials

自然言語処理 :: 自然言語処理ツールNLTK、WordNetを利用して単語間類似度を算出するには

WordNet Interface

#!/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))