文章を単語ごとに区切り、その単語のそれぞれをWord2Vecを用いてベクトル化し、その単語のベクトルを足し合わせて割り、文書のベクトルを作成するといったようなシステムを現在考えております。ですが、開発にあたって以下の問題が現在発生しております。
以下のような配列ならば、学習済みのモデルに全ての言語が存在しているので、配列を作成することができるのですが、
print(tokensSituation[1])
['単身', '生活', '認知症', 'サービス', '拒否']
以下のような配列ならば、配列を作成することができません。
print(tokensSituation[3])
['本人', 'の', 'サービス', '利用', 'の', '受け入れ', '拒否', 'が', 'ある']
その配列を作成するにあたって以下のような、プログラムを用いています。
#配列(文章が入っている)をさらに配列化
for i in range(len(lis)):
tokensSituation[i]=tokensSituation[i].split(None)
文書ベクトルの取り出し
vectorSituation = []
#上手くいかないときは空ベクトルを入れる
for i in range(len(tokensSituation)):
try:
vectorSituation.append(model.wv[tokensSituation[i]])
except:
vectorSituation.append("")
成功した場合は以下のようになります。
print(vectorSituation[2])
[[ 0.214311 0.0763293 -0.15200703 -0.5290254 0.41505465 -0.14374866
-0.1341153 1.6714561 -0.32641277 -0.29895762 -0.24816583 -0.20321406
0.10796727 -0.55094725 0.27393502 0.01861681 0.12763897 -1.0396957
-0.07557113 0.02218909 -0.25819677 0.4510418 0.5632597 -0.52726966
-0.32833436 0.7289277 0.2308788 -0.70520157 -0.68929267 0.8254075
0.5232958 0.5211772 -0.73326635 0.9513962 0.47992742 0.51736903
-0.4802426 -0.2987823 -0.02941655 -0.3191735 0.36027023 -0.6644283
-0.3570222 -0.5372858 0.47830492 0.7038007 0.5130014 0.29020625
-0.02263755 0.633224 -0.05110889 -0.53327924 0.5052781 0.16690992
-0.5415479 0.06546304 0.01086431 -0.28765035 0.77242476 -0.3894536
-0.38116375 0.40702268 -1.3164475 -0.880887 -1.0531039 0.7047993
-0.515486 -0.6339134 -0.33423704 -0.81290007 0.35958564 0.94572353
-0.6440719 -1.1558281 -0.85172623 0.4126607 -0.5693497 -0.6200748
0.02033455 0.26306844 -0.3101573 -0.06374624 -0.40636164 -0.22165595
0.33404803 0.44969422 -0.84844774 -0.61118644 0.09472755 -0.17939241
0.17646971 1.0453675 -0.15476878 -0.5892942 -0.9322525 -0.16863802
0.17203142 -0.11771914 0.2524703 -0.13034603 0.5048813 0.79845566
-0.15936193 0.9839085 -0.59136915 0.5448013 0.30567595 0.3828392
-0.54085344 -0.8093304 1.2623922 -0.09587381 0.7555552 -0.4865914
-0.06827059 -0.05245666 -0.5349524 0.63968694 1.0497452 0.17983952
-0.01247313 0.6856805 -0.30855924 -0.20797628 -0.35864815 -0.06781255
0.2487806 0.38646418 0.15219611 0.21061708 1.0515122 -0.9730945
0.32896173 -0.84513026 0.4629758 -0.17268579 0.36211574 -0.68151677
-0.15703839 -1.0888574 -0.38603562 -0.52598035 0.4266147 -0.41019326
-0.55824864 0.30351368 -0.5989914 -0.02958382 0.83062357 0.4875426
0.04386955 -0.231299 -0.7354047 0.00927639 0.67622095 -0.41364112
-0.13425621 0.33664456 0.05408203 -1.4569676 0.01477764 -0.07543167
-0.8294748 -0.15443498 -0.4174124 -0.19840425 -0.70056593 0.7346665
-0.3391793 -0.15621033 0.4633026 -0.48280966 0.04982495 0.51888126
0.6029025 0.8520094 -0.9558713 -0.09466203 0.20855515 2.0263505
0.41342095 1.1731846 -0.5133959 0.7334054 -1.3457522 0.2444181
0.73714256 0.96892965 -0.6001914 -0.4871037 -0.53259593 -0.35659862
-0.21584105 0.7219355 0.55300343 0.50555307 -0.24949794 0.5068422
-0.774185 0.3395956 ]]
しかし、失敗した場合は空です。
どうすれば、modelにない単語だけ避けて、modelにある単語はベクトルを取得することができるでしょうか。
そのプログラムについてご教授ください。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/03 11:02 編集