我计算了两个文件的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)
如何使用这些值来计算余弦相似度?
我知道我应该计算点积,然后通过它找到距离并除以点积.如何使用我的值来计算?
还有一个问题:两个文件应该有相同数量的单词是否重要?
我的数据库中有一个包含自由文本字段列的表.
我想知道每个单词出现在所有行上的频率,或者甚至可以为所有单词计算TF-IDF,其中我的文档是每行的字段值.
是否可以使用Sql查询来计算?如果没有或有更简单的方法,请指导我吗?
非常感谢,
乔恩
除了在文本内容字段上具有tf-idf相似性的标准术语搜索之外,我还希望基于数字字段的"相似性"进行评分.这种相似性将取决于查询中的值与文档中的值之间的距离(例如,高斯与m = [用户输入],s = 0.5)
也就是说文档代表人,而人文档有两个字段:
我想找到像这样的文件
描述:( xyz)年龄:30岁
但年龄不是过滤器,而是分数的一部分(30岁以上的乘数为1.0,25岁的人为0.8等)
这可以以合理的方式实现吗?
编辑:最后我发现这可以通过使用CustomScoreQuery包装ValueSourceQuery和TermQuery来完成.请参阅下面的解决方案
编辑2:随着快速变化的Lucene版本,我只想补充说它是在Lucene 3.0(Java)上测试的.
好的,所以我有点困惑.然而,这应该是一个简单明了的问题.
在针对整个语料库计算文档的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个单词(列).
我是否将所有结果添加到列中或添加所有行?更重要的值是最相关的还是最相关的最低值?
Elasticsearch在排名时将文档的长度考虑在内(他们称这个字段为规范化).默认行为是将较短的匹配文档排名高于较长的匹配文档.
无论如何在查询时关闭或修改字段规范化?我知道索引时间omit_norms选项,但我宁愿不重新索引所有内容来尝试这一点.
而且,我想尝试一些事情,而不是简单地关闭字段规范化.我想考虑字段长度,但不像弹性搜索目前那么重要.使用默认行为,文档的排名将比文档的排名高2倍.我想尝试排名和长度之间的非线性关系.
我正在尝试使用tf-idf构建单词词典.但是,直觉上它没有意义.
如果tf-idf的逆文档频率(idf)部分计算术语相对于整个语料库的相关性,那么这意味着一些重要单词可能具有较低的相关性.
如果我们查看法律文件的语料库,每个文档中可能会出现"许可"或"合法"等术语.由于idf,这些条款的得分将非常低.但是,直观地说,这些术语应该有更高的分数,因为这些术语显然是合法的术语.
是TF-IDF建设方面的字典个不错的办法?
我用大量数据训练了岭分类器,这些数据用于tfidf vecotrizer矢量化数据,并且过去工作良好。但是现在我面临一个错误
'max_df对应于<min_df个文档'
数据存储在Mongodb中。
我尝试了各种解决方案,最后,当我在Mongodb中删除了只有1个文档(1条记录)的集合时,它正常工作并照常完成了培训。
但是我需要一个不需要删除记录的解决方案,因为我需要该记录。
另外,我不理解该错误,因为它仅在我的机器中运行。即使该记录存在于db中,该脚本也可以在我的系统中正常运行,该脚本在其他系统中也可以正常运行。
有人可以帮忙吗?
试图改善我的聊天应用程序:
使用我的域中的先前(预处理)聊天交互,我构建了一个工具,为用户提供给定聊天上下文的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]]你怎么样我很好你在办公室"说话"是的我是"是相关的,但是"是","否"也是相关的因为他们出现在类似的背景下.
尝试使用这个优秀的视频,作为一个起点
问:如果我所知道的(根据我的原始数据)只是一个真实的话语,我怎样才能衡量精确度和召回率?
我的目标是输入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文档,我对该查询执行哪些操作,以便可以找到与文档的余弦相似度?
在下面的示例中,我使用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) tf-idf ×10
python ×3
scikit-learn ×3
nlp ×2
chat ×1
dot-product ×1
java ×1
lucene ×1
mongodb ×1
nltk ×1
pipeline ×1
relevance ×1
scoring ×1
similarity ×1
sql ×1
trigonometry ×1