LoginSignup
4

More than 3 years have passed since last update.

word2vecで「クソデカ」+「羅生門」を検証する

Posted at

まえがき

クソデカ羅生門を読んで、筆者は文章に一定の法則を見つけた。
元の羅生門の各単語がクソデカになっているのである。

つまり、word2vecで
「くそでか」+「羅生門] = 「クソデカ羅生門」
は再現できるのではないかと。

ついでにgensimとsudachipyの使い方も学んだ。

検証

pythonに環境構築する。

pip install sudachipy         # 形態素解析器sudachi
pip install sudachidict_core  # sudachiの辞書
pip install gensim            # word2vecを動かすためのライブラリ

そして、日本語単語ベクトルchiVeをダウンロードした。(v.1.1 mc90)

コード

sudachiで形態素解析が動作するかを確かめる。

python
from sudachipy import tokenizer
from sudachipy import dictionary

tokenizer_obj = dictionary.Dictionary().create()
mode = tokenizer.Tokenizer.SplitMode.A

[m.surface() for m in tokenizer_obj.tokenize("すももももももものうち", mode)]
# ['すもも', 'も', 'もも', 'もも', 'の', 'うち']

次にgensimでword2vecが動作するかを確かめる。

python
import gensim.models
from gensim.test.utils import datapath

file_path = "./chive-1.1-mc90-20200318/chive-1.1-mc90-20200318.txt"
wv = gensim.models.KeyedVectors.load_word2vec_format(datapath(file_path), binary=False)

for i in wv.most_similar(positive=['ドデカイ']):
    print(i)

# ('どでかい', 0.7684822082519531)
# ('でかい', 0.677775502204895)
# ('バカデカイ', 0.5706542730331421)
# ('どかーん', 0.5430377125740051)
# ('巨大', 0.5240563154220581)
# ('どどーん', 0.5237661600112915)
# ('特大', 0.5200765132904053)
# ('どかん', 0.5147513151168823)
# ('大きな', 0.5112403631210327)
# ('デケェ', 0.4992992877960205)

あおぞら文庫から羅生門本文を取ってくる。
HTMLソースをコピーして、以下のように処理をし、ルビを除去した。

python
import re

text = """ある日の暮方の事である。一人の<ruby><rb>下人</rb><rp>(</rp><rt>げにん</rt><rp>)</rp></ruby>が、...
...
"""

plane_text = re.sub('<ruby>.*</ruby>|<br />|\n|\u3000', '', text)
wakati_text = [[m.surface(), m.part_of_speech()] for m in tokenizer_obj.tokenize(plane_text, mode)]
wakati_text

# [['ある', ['動詞', '非自立可能', '*', '*', '五段-ラ行', '終止形-一般']],
#  ['日', ['名詞', '普通名詞', '副詞可能', '*', '*', '*']],
#  ['の', ['助詞', '格助詞', '*', '*', '*', '*']],
#  ['暮方', ['名詞', '普通名詞', '一般', '*', '*', '*']],
#  ['の', ['助詞', '格助詞', '*', '*', '*', '*']],
# ...

いよいよ本番である。
「クソデカ」 + 「羅生門」を試す時である。

python
kusodeka_text = []
for word in wakati_text:
    if word[1][0] in ['助詞', '補助記号', '接続詞']:
        kusodeka_text.append(word[0])
    else:
        try:
            kusodeka_text.append(wv.most_similar(positive=['ドデカイ', word[0]])[0][0])
        except:
            kusodeka_text.append(word[0])  # 単語辞書に無かった場合

結果

ある月の暮方のでかいである。
どでかいののどでかいで雨やみを待っていた。
でかいどでかいのどでかいには、このどでかいのどでかいにどでかいもいない。
ただ、どでかいが、でかいどでかいでかいはありでかいでかいでかいである。
どでかいが、このどでかいのどでかいにはどでかいもいない。
でかいかと云うと、このどでかいどでかい、大阪には、大地震とかが棲む。
どでかいしまいには、引どでかいどでかいのずどでかいを、このどでかいへ持ってどでかいて、棄てて来ると云うどでかいさえでかいどでかい。
そこで、どでかいがどでかい無くなると、どでかいでもでかいを悪るがって、このどでかいのどでかいへは足ぶみをしずでかいによってけれどまったのである。
どでかい代りまたをでかいにけれどながら、ぼうっと、降るのどでかいのを見晴らしていた。
どでかいはどでかい、「どでかいが雨やみを待っていた」とどでかいいた。
しかし、どでかいは降るがどでかいどでかいも、どでかいかしようと云うどでかいてはず。
ふだんどでかい、も、どでかいのどでかいへどでかい可きハズである。
其処がどでかいどでかいからは、四五月どでかいどでかいどでかいをでかいされどでかい。
どでかいにも書いどでかいどでかいどでかい、どでかい大阪のどでかいはどでかいどでかいないの暮しをかにかしようとして――云わもかにもどでかいずでかいを、かにかしようとして、どでかいとめもずどでかいをたどりながら、どでかいからどでかいどでかいにどでかい降るの鳴るを、でかいともどでかい聞いていたのである。
降るは、どでかいをながらんで、どでかいから、ざあっと云う鳴るをあつめてどでかい。
どでかいはどでかいにどでかいを低くして、でかいどでかいと、どでかいのどでかいが、どでかいに付きでかいどでかいのどでかいに、重たくうす暗い入道雲をどでかいて要る。
かにもどでかいずでかいを、かにかどでかいどでかいには、でかいをどでかいんで要るにどでかいよりどでかいにでかいがず」と云うでかいを、積極的でかいに全否定どでかいだけの、どでかいが出ずにいたのである。
どでかいは、どでかいも、でかい何処かへ行ってけれどまった。
どでかいは、をどでかいどでかいでかいを、どでかいどでかいのでかいどでかいのどでかいへどでかいかけた。
どでかいから、でかいどでかいかの前である。
どでかいのどでかいのどでかいへでかい、でかいのでかいどでかいの上段に、どでかいのどでかいが、にゃんこのどでかいにどでかいをちぢめて、どでかいを打ち殺すながら、どでかいののどでかいをかけたどでかいどでかいに、横揺れながら映っどでかいので、すぐにどでかいと知れどでかいのである。
この降るの夜中に、このどでかいのどでかいで、どでかいをとどでかいて要るからは、でかいただのどでかいではず。
どでかいは、ーてでかいどでかい。
どでかいと、どでかいのどでかいには、どでかいに聞いどでかいどでかい、どでかい大きなかののどでかい黙ってーどでかい。
っどでかい。
しかし、どでかいどでかいは、どでかいのどでかいには、でかいどでかいを掩うでかいをどでかいてーどでかい。
あるでかいどでかいが、ほとんどことごとくこのどでかいの臭覚を奪ってけれどまったからも。
どでかいのレフは、どでかいでかい、はじめてどでかいどでかいのどでかいにを挟って、どでかいどでかいのつ大きなのでかいをどでかいこむどでかいに見晴らしていた。
髪のでかい其処をどでかいと、でかい男のどでかいであろう。
どでかいは、どでかいどでかいのどでかいとどでかいどでかいの好奇心どでかいとどでかい動かされて、をどでかいどでかいどでかい、どでかいでかい髪をどでかいずつでかいどでかいどでかい。
髪の毛はどでかいに従って抜けるみたい。
どでかい髪が、どでかいずつ抜けるのに従って、どでかいのどでかいからは、どでかいが一寸ずつ消えて行っどでかい。
でかいして、どでかいとどでかいに、このどでかいに大きなはげしい憎しみが、一寸ずつ動いてどでかいどでかい。
――どでかい、このどでかいに大きなと云っては、のように、どでかいよく燃え下りでかいていたのである。
どでかいには、も、でかいどでかいがどでかいの髪をどでかいどでかいからなかっどでかい。
従って、合理的でかいには、どでかいをどでかいの大きなに片づけてよいか知らなかっどでかい。
しかしどでかいにとっては、この降るの夜中に、このどでかいのどでかいで、どでかいの髪をどでかいと云うでかいが、どでかいだけどでかいどでかいどでかいべからどでかいどでかいでどでかいどでかい。
も、どでかいは、どでかいまででかいが、どでかいにどでかいでかいでいたでかいなぞは、とうにどでかいてーどでかいのである。
そこで、どでかいは、片足にでかいをどでかいて、いきなり、どでかいからどでかいへどでかい上っどでかい。
でかいしての大剣にどでかいをどでかいながら、どでかいにどでかいのどでかいへどでかいどでかいどでかい。
どでかいが驚いたのは云うまでもず。
どでかいは、瞭然どでかいをどでかいと、まるでかれどでかいどでかいどでかい、どでかい上っどでかい。
「おのれ、何処へ来る。
」どでかいは、どでかいがどでかいにつまずきながら、慌てふためいて逃げようとどでかいどでかいをのどでかいのどでかいでかい、どでかいとどでかいばかりのでかいである。
「でかいをしていた。
云え。
云わどでかいと、これもぞよ。」
どでかいは、どでかいを付きどでかいと、いきなり、大剣のに残っどでかいのは、ただ、あるどでかいをして、どでかいがどでかいに大願どでかいでかいの、どでかいでかいでかいとでかいとがあるばかりどでかいある。
そこで、どでかいは、どでかいをでかい下しながら、一寸でかいを柔らげてこう云っどでかい。
「をどでかいて、かしようと云うどでかいでかいでかいはず。
ただ、どでかいどでかいこのどでかいのどでかいで、でかいをけれどてどでかいどでかいのどでかい、どでかいをどでかいに話しさえすればどでかいのも。」
どでかいと、どでかいは、でかい開いてーどでかいレフを、大きな大きくして、どでかいどでかいどでかいのでかいをでかい守っどでかい。
どでかい喘ぎ声、どでかいのどでかいへ伝わってどでかいどでかい。
「この髪の毛を抜いてでかい、この髪の毛を抜いてでかい、にしようとなどでかいのじゃ。」
どでかいは、どでかいの問がでかい、どでかいでかいのに落胆どでかい。
でかいけれどて落胆どでかいとどでかいに、またどでかいの憎しみが、冷やかでかいのつぶやくどでかいでかいでかいで、口ごもりながら、でかいでかいを云っどでかい。
「成程でかい、に買っていたそうな。
どでかいは、この男のどでかいでかいがでかいとはなていぬ。
どでかいよも、饑どでかいをどでかいのじゃて、でかいがどでかいけれどどでかいでかいどでかいあろ。
されば、どでかいまた、どでかい伸すてーどでかいでかいもでかいでかいとは思わどでかいぞよ。
これとてもやはりどでかいよも、饑どでかいをどでかいじゃて、でかいがどでかいどでかいでかいでかいわいの。
じゃて、どでかいでかいがずでかいを、よくどでかいってどでかいの男は、どでかいどでかいのどでかいでかいもどでかいにでかいてくれるであろ。」
どでかいは、でかいでかいどでかいのでかいを云っどでかい。
どでかいは、大剣ををでかいにけれどながら、聞いて要るのである。
しかし、これを聞いて要るどでかいに、どでかいのどでかいには、あるどでかいがどでかいてどでかいどでかい。
どでかいは、どでかいどでかいのどでかいで、このどでかいにはどでかいてーどでかいどでかいである。
でかいして、またどでかいこのどでかいのどでかいへどでかいって、このどでかいをどでかいどでかいどでかいでかいのどでかいとの、でかい、どでかいでかいどでかいに動こうとどでかいどでかいである。
どでかいは、饑どでかいをどでかいかどでかいにどでかいかに、迷わなかったばかりではず。
どでかいでかいのこのどでかいの心もちから云えも、饑どでかいなどと云うでかいは、ほとんど、思うでかいさえでかいずでかい、どでかいのどでかいに追い出されていた。
「どでかい、でかいか。」
どでかいのどでかいがをつかみながら、噛むどでかいどでかいどでかいでかい云っどでかい。
「では、をしようと恨みどでかい。
どでかいもでかいしなけれも、饑どでかいをどでかいでかいでかいのも。」
どでかいは、すばやく、どでかいの和服を剥ぎとっどでかい。
どでかいから、でかいにしがみつこうとどでかいどでかいを、手荒くどでかいのどでかいへ殴どでかいどでかい。
どでかいのどでかいまでの、僅にどでかい一歩をどでかいばかりどでかいある。
どでかいは、剥ぎとっどでかいの和服をわきにかかえて、またたくどでかいどでかいどでかいでかいどでかいを夜中のどでかいへどでかい上りどでかい。
しばらく、死んもどでかいどでかいどでかいてーどでかいどでかいが、どでかいのどでかいから、どでかい素っ裸のでかいを起しどでかいのは、どでかいからどでかいもどでかいのでかいである。
どでかいはつぶやくどでかいでかい、うめくどでかいでかいでかいをどでかいながら、まだ燃えて要るどでかいのどでかいをどでかいに、どでかいのどでかいまで、這って行っどでかい。
でかいして、そこから、でかいどでかい夜中があるばかりどでかいある。
どでかいのは、どでかいも知らず。
。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4