为了账号安全,请及时绑定邮箱和手机立即绑定

Word2vec Gensim 准确度分析

Word2vec Gensim 准确度分析

杨__羊羊 2021-07-08 14:11:57
我正在开发一个 NLP 应用程序,其中有一个文本文件语料库。我想使用Gensim word2vec 算法创建词向量。我做了 90% 的训练和 10% 的测试拆分。我在适当的集上训练了模型,但我想评估模型在测试集上的准确性。我在互联网上浏览过任何关于准确性评估的文档,但我找不到任何允许我这样做的方法。有谁知道进行精度分析的函数?我处理测试数据的方式是从测试文件夹中的文本文件中提取所有句子,并将其变成一个巨大的句子列表。在那之后,我使用了一个我认为是正确的函数(事实证明它不是因为它给了我这个错误:TypeError: 不知道如何处理 uri)。这是我如何去做的:test_filenames = glob.glob('./testing/*.txt')print("Found corpus of %s safety/incident reports:" %len(test_filenames))test_corpus_raw = u""for text_file in test_filenames:    txt_file = open(text_file, 'r')    test_corpus_raw += unicode(txt_file.readlines())print("Test Corpus is now {0} characters long".format(len(test_corpus_raw)))test_raw_sentences = tokenizer.tokenize(test_corpus_raw)def sentence_to_wordlist(raw):    clean = re.sub("[^a-zA-Z]"," ", raw)    words = clean.split()    return wordstest_sentences = []for raw_sentence in test_raw_sentences:    if len(raw_sentence) > 0:        test_sentences.append(sentence_to_wordlist(raw_sentence))test_token_count = sum([len(sentence) for sentence in test_sentences])print("The test corpus contains {0:,} tokens".format(test_token_count))####### THIS LAST LINE PRODUCES AN ERROR: TypeError: don't know how to handle uri texts2vec.wv.accuracy(test_sentences, case_insensitive=True)我不知道如何解决这最后一部分。请帮忙。提前致谢!
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

accuracy()一个方法gensim字向量模型(现在的冷遇相比evaluate_word_analogies())不会把你的文本输入-它需要的字,类推挑战专门格式的文件。这个文件通常被命名为questions-words.txt.

这是一种测试通用词向量的流行方法,可以追溯到 Google 的原始 Word2Vec 论文和代码发布。

但是,此评估不一定表明哪些词向量最适合您的需求。(例如,一组词向量可能在这些类比上得分更高,但对于特定分类或信息检索目标则更糟。)

为了您自己的目的的良好向量,您应该设计一些特定于任务的评估,它给出与您的最终目标的成功相关的分数。

另请注意,作为无监督算法,词向量不一定需要保留测试集才能进行评估。您通常希望使用尽可能多的数据来训练词向量——确保最大的词汇覆盖率,每个词的示例最多。然后,您可能会根据某个外部标准测试词向量——比如类比问题,它们根本不是训练集的一部分。

或者,您只需将词向量用作您正在测试的某些下游任务的附加输入,并且在该下游任务中,您将保留用于训练某些监督算法的测试集。这确保您的监督方法不仅仅是记住/过度拟合标记的输入,并且为您提供关于该词向量集是否有助于下游任务的间接质量信号。(而且,该词向量集可以根据它们对其他监督任务的帮助程度与其他词向量集进行比较,而不是与它们自己相同的无监督训练步骤进行比较。)



查看完整回答
反对 回复 2021-07-13
?
慕村9548890

TA贡献1884条经验 获得超4个赞

Gensim 具有用于测试数据的各种其他指标,使用它们,您可能可以在几行代码中定义自己的函数。例如,除了models.wv.analogy()evaluate_word_analogies,也有类似的功能evaluate_word_pairscloser_than()distance()most_similar()等(请参阅该文档的models.keyedvector更多细节。)这些功能,也许单独或作为更大的功能部分用来评估你的话的嵌入。希望这可以帮助!


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信