如何修复非索引字预处理不一致


每次

执行此函数时,我都会抛出一个用户警告。这里user_input是一个单词列表,article_sentences是一个单词列表。

我试图事先从列表中删除所有停用词,但这并没有改变任何东西。

def generate_response(user_input):
    sidekick_response = ''
    article_sentences.append(user_input)
    word_vectorizer = TfidfVectorizer(tokenizer=get_processed_text, stop_words='english')
    all_word_vectors = word_vectorizer.fit_transform(article_sentences) # this is the problematic line
    similar_vector_values = cosine_similarity(all_word_vectors[-1], all_word_vectors)
    similar_sentence_number = similar_vector_values.argsort()[0][-2]

这是我在这里找到的简单聊天机器人功能的一部分:https://stackabuse.com/python-for-nlp-creating-a-rule-based-chatbot/它应该返回一个按user_input匹配程度排序的句子排序的句子列表,它确实如此,但它也会抛出这个UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens ['ha', 'le', 'u', 'wa'] not in stop_words

此处已讨论此用户警告问题。正如@jnothman所说:

。确保对停止列表进行预处理,以确保它像令牌一样规范化,并将规范化单词列表作为stop_words传递给矢量化器。

预处理似乎存在问题。

根据我的个人经验,预处理中的词干提取步骤会导致某些词干,例如将 ing">融资"一词分离以保留词干融资。最终,这些会继续存在并导致与TFIDF_Vectorizer -> stop_words列表不一致。

您可以查看这篇文章以获取有关此的更多信息 - Python 词干分析器问题:错误的词干

您也可以尝试避免词干提取过程,仅进行标记。这至少可以解决不一致错误。

最新更新