使用已知的Python包实现N-Gram、TF-IDF和余弦相似度

我正在尝试使用以下方法实现一个相似度函数:

  • N-Gram
  • TF-IDF
  • 余弦相似度

示例enter image description here

概念:

words = [...]word = '...'similarity = predict(words,word)def predict(words,word):     words_ngrams = create_ngrams(words,range=(2,4))       word_ngrams =  create_ngrams(word,range=(2,4))     words_tokenizer = tfidf_tokenizer(words_ngrams)     word_vec = words_tokenizer.transform(word)     return cosine_similarity(word_ved,words_tokenizer)

我在网上搜索了一个简单且安全的实现方法,但没有找到使用已知Python包如sklearn、nltk、scipy等的实现,大多数都是使用“自制”的计算方法。

我试图避免手动编写每个步骤,我猜想对于“整个流程”应该有一个简单的解决方案。

任何帮助(和代码)都将不胜感激。谢谢:)


回答:

最终我找到了解决方法…

对于那些需要解决这个问题的朋友,这里是我编写的一个函数,可以处理这个问题…

'''### N-Gram & TD-IDF & 余弦相似度使用'from列'上的N-Gram与TF-IDF来预测'to列'。向数据框添加一个包含数值结果的'cosine_similarity'特征。'''def add_prediction_by_ngram_tfidf_cosine( from_column_name,ngram_range=(2,4) ):    global df    from sklearn.feature_extraction.text import TfidfVectorizer    from sklearn.metrics.pairwise import cosine_similarity    vectorizer = TfidfVectorizer( analyzer='char',ngram_range=ngram_range )    vectorizer.fit(df.FromColumn)    w = from_column_name    vec_word = vectorizer.transform([w])    df['vec'] = df.FromColumn.apply(lambda x : vectorizer.transform([x]))    df['cosine_similarity'] = df.vec.apply(lambda x : cosine_similarity(x,vec_word)[0][0])    df = df.drop(['vec'],axis=1)

注意:这还不是生产就绪的版本

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注