研读论文报告-《Word Embedding andWordNet Based Metaphor Identification and Interpretation》(2018ACL)

“论文主要研究的问题是识别并解释输入句子中的隐喻词,作者首次提出了一个支持机器翻译的无监督隐喻识别模型,无需任何预处理和标注数据即可进行训练。”

本次主要根据论文实现的论文的第四部分的如下图:

 

具体:程序步骤是给出一个英文句子,指定需要判断的目标单词,应用维基数据集训练词向量,得到所有英语单词的词向量(我写的程序可追加训练),给出一个英文句子,指定需要判断的目标单词,将句子中的单词分为上下文单词和目标单词  。根据WordNet,查找目标单词的同义词和直接上位词,将这些单词以及他们的变形作为候选单词集合,根据论文公式计算每个候选词和上下文单词的均值向量的cos相似度,取使相似度最大的单词作为最接近的词X,然后再计算X与目标单词的cos相似度,根据是否大于论文中所说的阈值来判断隐喻性。阈值论文交代了为0.6。

python 2.7

需要装的包:gensim、numpy、nltk。

第一步要先把将下载的wiki预料压缩包转换为text格式。

gensim部分程序,包括第一步和利用gensim生成词向量程序参考了网上的例子。

# -*- coding: utf-8 -*-
from __future__ import print_function
import six
from gensim.corpora import WikiCorpus
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


if __name__ == '__main__':
    inp = "enwiki-latest-pages-articles1.xml-p1p30303.bz2"
    outp = "out_wiki.en_new.txt"
    space = " "
    i = 0

    output = open(outp, 'w')
    wiki = WikiCorpus(inp, lemmatize=False, dictionary={})
    for text in wiki.get_texts():
        if(i % 1000 == 0):
            print("正在抽取第"+str(i)+"篇文章")
        if six.PY3:
            output.write(' '.join(text).decode('utf-8') + '\n')
        else:
            output.write(space.join(text) + "\n")
        i = i + 1
    output.close()
# -*- coding: utf-8 -*-
from gensim.models import Word2Vec
from smart_open import open
if __name__ == '__main__':
    input1 = "out_wiki.en_new.txt"
    output1 = "word2vec1.model"
    output2 = "vector1.model"

    sentences = []
    with open(input1, 'r') as f:
        for line in f:
            if " " in line:
                sentences.append(line.split(" "))

    model = Word2Vec(size=200, window=5, min_count=5, workers=4)  # 定义word2vec 对象
    print "正在建立训练集词典,请稍等……"
    #.sg=1是skip-gram算法,对低频词敏感;默认sg=0为CBOW算法。语料小(小于一亿词,约 500MB 的文本文件)的时候用 Skip-gram 模型,语料大的时候用 CBOW 模型

    model.build_vocab(sentences)  # 建立初始训练集的词典
    print "正在训练词向量,请稍等……"
    model.train(sentences, total_examples=model.corpus_count, epochs=model.iter)  # 模型训练
    print "正在训练模型,请稍等……"
    model.save(output1)  # 模型保存
    print "正在保存模型和词向量,请稍等……"
    model.wv.save_word2vec_format(output2, binary=False)  # 词向量保存
    print "完成!"

 

 

研读论文报告-《Word Embedding andWordNet Based Metaphor Identification and Interpretation》(2018ACL)

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值