spacy
新しい単語をベクトル化するためにロードする、事前にトレーニングされたword2vecモデルがあります。新しいテキストが与えられた場合nlp('hi').vector
、単語「hi」のベクトルを取得するために実行します。
最終的には、事前にトレーニングしたモデルの語彙に存在しない新しい単語をベクトル化する必要があります。このシナリオでは、spacy
デフォルトでゼロで満たされたベクトルになります。このデフォルトのベクトルをOOV用語に設定できるようにしたいと思います。
例:
import spacy
path_model= '/home/bionlp/spacy.bio_word2vec.model'
nlp=spacy.load(path_spacy)
print(nlp('abcdef').vector, '\n',nlp('gene').vector)
このコードは、単語「gene」の密なベクトルと単語「abcdef」の0でいっぱいのベクトルを出力します(語彙に存在しないため)。
私の目標は、欠落している単語のベクトルを指定できるようにすることです。したがって、単語 'abcdef'に対して0でいっぱいのベクトルを取得する代わりに、(たとえば)1でいっぱいのベクトルを取得できます。
SpaCyのデフォルトのすべてゼロのベクトルの代わりにプラグベクトルが必要な場合は、すべてゼロのベクトルを自分のものに置き換えるステップを追加するだけです。例えば:
words = ['words', 'may', 'by', 'fehlt']
my_oov_vec = ... # whatever you like
spacy_vecs = [nlp(word) for word in words]
fixed_vecs = [vec if vec.any() else my_oov_vec
for vec in spacy_vecs]
なぜあなたがこれをしたいのか分かりません。単語ベクトルを使った多くの作業は、単に語彙外の単語を排除します。SpaCyのゼロベクトルを含む任意のプラグ値を使用すると、役に立たないノイズが追加される可能性があります。
また、OOV単語の処理を改善することが重要な場合は、FastTextなどの他の単語ベクトルモデルが、トレーニング中にサブ単語フラグメントに対して学習されたベクトルを使用して、OOV単語の何もない推測ベクトルを合成できることに注意してください。これは、よく知られている単語の語根から単語の要点を理解する方法と似ています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加