首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单词不在词汇表中

单词不在词汇表中
EN

Stack Overflow用户
提问于 2019-06-10 18:48:52
回答 1查看 566关注 0票数 3

第一次使用word2vec时,我处理的文件是XML格式的。我想遍历专利以找到每个标题,然后应用word2vec来查看是否有相似的单词(以指示相似的标题)。

到目前为止,我已经使用元素树解析了XML文件以检索每个标题,然后应用sent_tokenizer,然后应用tweet tokenizer返回一个句子列表,其中每个单词都已被标记化(不确定这是否是最好的方法)。然后,我将标记化的句子放入我的word2vec模型中,并使用一个单词进行测试,看看它是否返回了一个向量。这似乎只对第一句话中的一个单词有效。我不确定它是否能识别所有的句子?

    import numpy as np
    import pandas as pd
    import gensim
    import nltk
    import xml.etree.ElementTree as ET
    from gensim.models.word2vec import Word2Vec
    from nltk.tokenize import word_tokenize
    from nltk.tokenize import sent_tokenize
    from nltk.corpus import stopwords
    from nltk.tokenize import TweetTokenizer, sent_tokenize

    tree = ET.parse('6785.xml')
    root = tree.getroot()

    for child in root.iter("Title"):
        Patent_Title = child.text
        sentence = Patent_Title
        stopWords = set(stopwords.words('english'))
        tokens = nltk.sent_tokenize(sentence)
        print(tokens)

        tokenizer_words = TweetTokenizer()
        tokens_sentences = [tokenizer_words.tokenize(t) for t in tokens]
        #print(tokens_sentences)

        model = gensim.models.Word2Vec(tokens_sentences, min_count=1,size=32)
        words = list(model.wv.vocab)
        print(words)
        print(model['Solar'])

我希望它能识别句子中的单词‘out’,并打印出向量,然后我就可以查找相似的单词了。我正在接收error

'Solar‘一词不在词汇表中“

EN

回答 1

Stack Overflow用户

发布于 2019-06-10 19:46:38

只需在第一个循环发生时将错误作为异常处理即可。

# print(model['Solar'])
try:
    print(model['Solar'])
except Exception as e:
    pass

工作代码:

import numpy as np
import pandas as pd
import gensim
import nltk
import xml.etree.ElementTree as ET
from gensim.models.word2vec import Word2Vec
from nltk.tokenize import word_tokenize
from nltk.tokenize import sent_tokenize
from nltk.corpus import stopwords
from nltk.tokenize import TweetTokenizer, sent_tokenize

tree = ET.parse('6785.xml')
root = tree.getroot()

for child in root.iter("Title"):
    Patent_Title = child.text
    sentence = Patent_Title
    stopWords = set(stopwords.words('english'))
    tokens = nltk.sent_tokenize(sentence)
    print(tokens)

    tokenizer_words = TweetTokenizer()
    tokens_sentences = [tokenizer_words.tokenize(t) for t in tokens]
    #print(tokens_sentences)

    model = gensim.models.Word2Vec(tokens_sentences, min_count=1,size=32)
    words = list(model.wv.vocab)
    print(words)
    try:
        print(model['Solar'])
    except Exception as e:
        pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56524948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档