标签: tf-idf

余弦相似度

我计算了两个文件的tf/idf值.以下是tf/idf值:

1.txt
0.0
0.5
2.txt
0.0
0.5
Run Code Online (Sandbox Code Playgroud)

文件如下:

1.txt = > dog cat
2.txt = > cat elephant
Run Code Online (Sandbox Code Playgroud)

如何使用这些值来计算余弦相似度?

我知道我应该计算点积,然后通过它找到距离并除以点积.如何使用我的值来计算?

还有一个问题:两个文件应该有相同数量的单词是否重要?

java trigonometry similarity tf-idf dot-product

6
推荐指数
2
解决办法
2万
查看次数

使用Sql计算TF-IDF

我的数据库中有一个包含自由文本字段列的表.

我想知道每个单词出现在所有行上的频率,或者甚至可以为所有单词计算TF-IDF,其中我的文档是每行的字段值.

是否可以使用Sql查询来计算?如果没有或有更简单的方法,请指导我吗?

非常感谢,

乔恩

sql tf-idf sql-server-2008

6
推荐指数
1
解决办法
3898
查看次数

Lucene为数字字段定制评分

除了在文本内容字段上具有tf-idf相似性的标准术语搜索之外,我还希望基于数字字段的"相似性"进行评分.这种相似性将取决于查询中的值与文档中的值之间的距离(例如,高斯与m = [用户输入],s = 0.5)

也就是说文档代表人,而人文档有两个字段:

  • 说明(全文)
  • 年龄(数字).

我想找到像这样的文件

描述:( xyz)年龄:30岁

但年龄不是过滤器,而是分数的一部分(30岁以上的乘数为1.0,25岁的人为0.8等)

这可以以合理的方式实现吗?

编辑:最后我发现这可以通过使用CustomScoreQuery包装ValueSourceQuery和TermQuery来完成.请参阅下面的解决方案

编辑2:随着快速变化的Lucene版本,我只想补充说它是在Lucene 3.0(Java)上测试的.

lucene scoring tf-idf

6
推荐指数
1
解决办法
4826
查看次数

TF-IDF简单使用 - NLTK/Scikit Learn

好的,所以我有点困惑.然而,这应该是一个简单明了的问题.

在针对整个语料库计算文档的TF-IDF矩阵之后,我得到了与此非常类似的结果:

array([[ 0.85...,  0.  ...,  0.52...],
       [ 1.  ...,  0.  ...,  0.  ...],
       [ 1.  ...,  0.  ...,  0.  ...],
       [ 1.  ...,  0.  ...,  0.  ...],
       [ 0.55...,  0.83...,  0.  ...],
       [ 0.63...,  0.  ...,  0.77...]])
Run Code Online (Sandbox Code Playgroud)

如何使用此结果获取与搜索查询最相似的文档?基本上我正在尝试为维基百科重新创建一个搜索栏.根据搜索查询,我想从维基百科返回最相关的文章.在这种情况下,有6篇文章(行),搜索查询包含3个单词(列).

我是否将所有结果添加到列中或添加所有行?更重要的值是最相关的还是最相关的最低值?

python nlp nltk tf-idf scikit-learn

6
推荐指数
1
解决办法
4156
查看次数

Elasticsearch:在查询时修改字段规范化(查询中的omit_norms)

Elasticsearch在排名时将文档的长度考虑在内(他们称这个字段为规范化).默认行为是将较短的匹配文档排名高于较长的匹配文档.

无论如何在查询时关闭或修改字段规范化?我知道索引时间omit_norms选项,但我宁愿不重新索引所有内容来尝试这一点.

而且,我想尝试一些事情,而不是简单地关闭字段规范化.我想考虑字段长度,但不像弹性搜索目前那么重要.使用默认行为,文档的排名将比文档的排名高2倍.我想尝试排名和长度之间的非线性关系.

tf-idf relevance elasticsearch

6
推荐指数
0
解决办法
372
查看次数

用于术语提取的tf-idf背后的直觉

我正在尝试使用tf-idf构建单词词典.但是,直觉上它没有意义.

如果tf-idf逆文档频率(idf)部分计算术语相对于整个语料库的相关性,那么这意味着一些重要单词可能具有较低的相关性.

如果我们查看法律文件的语料库,每个文档中可能会出现"许可"或"合法"等术语.由于idf,这些条款的得分将非常低.但是,直观地说,这些术语应该有更高的分数,因为这些术语显然是合法的术语.

TF-IDF建设方面的字典个不错的办法?

nlp machine-learning tf-idf

6
推荐指数
1
解决办法
386
查看次数

max_df对应的文档比Ridge分类器中的min_df错误更大

我用大量数据训练了岭分类器,这些数据用于tfidf vecotrizer矢量化数据,并且过去工作良好。但是现在我面临一个错误

'max_df对应于<min_df个文档'

数据存储在Mongodb中。
我尝试了各种解决方案,最后,当我在Mongodb中删除了只有1个文档(1条记录)的集合时,它正常工作并照常完成了培训。

但是我需要一个不需要删除记录的解决方案,因为我需要该记录。

另外,我不理解该错误,因为它仅在我的机器中运行。即使该记录存在于db中,该脚本也可以在我的系统中正常运行,该脚本在其他系统中也可以正常运行。

有人可以帮忙吗?

machine-learning tf-idf mongodb

6
推荐指数
1
解决办法
4150
查看次数

在原始数据缺失信息时测量精度和召回

试图改善我的聊天应用程序:

使用我的域中的先前(预处理)聊天交互,我构建了一个工具,为用户提供给定聊天上下文的5种可能的话语,例如:

Raw:"嗨,约翰."

上下文:嗨[[USER_NAME]]
话语:[嗨,你好,你好,你好,再次问好你好]


当然,结果并不总是相关的,例如:

Raw:"嗨,约翰.你好吗?我很好,你在办公室吗?"

背景:嗨[[USER_NAME]]你怎么样我在办公室你很好
话语:[是,不,你好,我是,你好,你好 ]

我使用Elasticsearch与TF/IDF相似性模型和索引结构如下:

{
  "_index": "engagements",
  "_type": "context",
  "_id": "48",
  "_score": 1,
  "_source": {
    "context": "hi [[USER_NAME]] how are you i am fine are you in the office",
    "utterance": "Yes I am"
  }
}
Run Code Online (Sandbox Code Playgroud)

问题:我肯定知道,对于上下文"hi [[USER_NAME]]你怎么样我很好你在办公室"说话"是的我是"是相关的,但是"是","否"也是相关的因为他们出现在类似的背景下.

尝试使用这个优秀的视频,作为一个起点

问:如果我所知道的(根据我的原始数据)只是一个真实的话语,我怎样才能衡量精确度和召回率?

chat classification tf-idf elasticsearch precision-recall

6
推荐指数
1
解决办法
247
查看次数

使用sklearn如何计算文档和查询之间的tf-idf余弦相似度?

我的目标是输入3个查询,并找出哪个查询与一组5个文档最相似。

到目前为止,我已经计算出tf-idf执行以下操作的文档:

from sklearn.feature_extraction.text import TfidfVectorizer

def get_term_frequency_inverse_data_frequency(documents):
    allDocs = []
    for document in documents:
        allDocs.append(nlp.clean_tf_idf_text(document))
    vectorizer = TfidfVectorizer()
    matrix = vectorizer.fit_transform(allDocs)
    return matrix

def get_tf_idf_query_similarity(documents, query):
    tfidf = get_term_frequency_inverse_data_frequency(documents)
Run Code Online (Sandbox Code Playgroud)

我现在遇到的问题是我拥有tf-idf文档,我对该查询执行哪些操作,以便可以找到与文档的余弦相似度?

python tf-idf cosine-similarity scikit-learn

6
推荐指数
1
解决办法
1368
查看次数

情感分析管道,使用特征选择时无法获得正确的特征名称

在下面的示例中,我使用Twitter数据集执行情感分析。我使用sklearn管道执行一系列转换,添加功能并添加分类器。最后一步是可视化具有较高预测能力的单词。当我不使用功能选择时,它工作正常。但是,当我使用它时,得到的结果毫无意义。我怀疑在应用特征选择时,文本特征的顺序会发生变化。有办法解决这个问题吗?

以下代码已更新,以包含正确的答案

from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.pipeline import Pipeline, FeatureUnion

features= [c for c in df.columns.values if c  not in ['target']]
target = 'target'

#train test split
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2,stratify = df5[target], random_state=0)

#Create classes which allow to select specific columns from the dataframe

class NumberSelector(BaseEstimator, TransformerMixin):

    def __init__(self, key):
        self.key = key

    def fit(self, X, y=None):
        return self

    def transform(self, X):
        return X[[self.key]]

class TextSelector(BaseEstimator, TransformerMixin):

    def __init__(self, key):
        self.key = key …
Run Code Online (Sandbox Code Playgroud)

python pipeline tf-idf feature-selection scikit-learn

6
推荐指数
1
解决办法
184
查看次数