Как объединить разные наборы встраивания слов? - PullRequest
0 голосов
/ 28 марта 2019

Я строю классификатор семантических отношений.

Пример отношения "причина-следствие": " Цинк необходим для роста и деления клеток."

Для этого я использую предтренированные вложения слов из Spacy, так как у меня недостаточно данных для обучения. Я выбрал два подхода:

  1. взял два слова, которые связаны (или не связаны), и вычислил их косинусное сходство, используя их вложение слов, и использовал это как вектор признаков для классификатора MLP.
  2. взял средний вектор всего предложения и использовал его как вектор признаков для классификатора MLP. Но результаты тестовых данных не очень хороши (приблизительно 50% точности и отзыва). Я думаю, что результаты могли бы улучшиться, комбинируя оба подхода, но я действительно не знаю, как это сделать.

Я использую многослойный персептрон с одним скрытым слоем из 150 узлов.

Вот код первого подхода:

nlp=spacy.load('en_core_web_md') #these are the embeddings

entities_vec=np.zeros((len(entity1), 300))
for i in range(len(entity1)):
    doc1=nlp(entity1[i])
    doc2=nlp(entity2[i])
    entities_vec[i,:]=(sum(doc1.vector, doc2.vector))*0.5

Вот код второго подхода:

sentences_vec=np.zeros((len(sentences), 300))
for i in range(len(sentences)):
    doc=nlp(sentences[i])
    sentences_vec[i,:]=doc.vector

Я попытался добавить предложения_vec и entity_vec, но это дало еще худшие результаты в тестовых данных. Какой бы был способ улучшить модель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...