我需要比较存储在数据库中的文档,并得出0到1之间的相似性得分.
我需要使用的方法必须非常简单.实现n-gram的vanilla版本(可以定义要使用的克数),以及tf-idf和余弦相似度的简单实现.
有没有可以做到这一点的程序?或者我应该从头开始写这个?
是否有任何库用于计算一对句子的语义相似度分数?
我知道WordNet的语义数据库,以及我如何生成2个单词的分数,但我正在寻找能够完成所有预处理任务的库,如整个句子和输出中的端口阻塞,停止单词删除等这两个句子的相关程度得分.
我找到了一个正在使用.NET框架编写的工作,该框架使用一系列预处理步骤来计算得分.是否有任何项目在python中执行此操作?
我不是在寻找可以帮助我找到分数的操作顺序(正如
我在这里要求的那样)
我喜欢自己实现每个阶段,或者从不同的库中粘合函数以便它适用于句子对,但我需要这个作为测试数据推断的工具.
编辑:我正在考虑使用NLTK并计算在两个句子上迭代的每对单词的分数,然后从结果的标准偏差中得出推论,但我不知道这是否是相似性的合理估计.另外,对于长琴弦来说,这需要很多时间.
同样,我正在寻找已经智能地实现这一点的项目/库.让我这样做的东西:
import amazing_semsim_package
str1='Birthday party ruined as cake explodes'
str2='Grandma mistakenly bakes cake using gunpowder'
>>similarity(str1,str2)
>>0.889
Run Code Online (Sandbox Code Playgroud) 我正在制作一个这样的项目: https://www.youtube.com/watch?v =dovB8uSUUXE&feature=youtu.be 但我遇到了麻烦,因为我需要检查句子之间的相似性,例如:如果用户说:“那个人穿红色T恤”而不是“那个男孩穿红色T恤” 我想要一种方法来检查这两个句子之间的相似度,而不必检查每个单词之间的相似度有没有办法做到这一点在Python中?
我正在尝试找到一种方法来检查两个句子之间的相似性。
我目前正在尝试形成一种算法,该算法将根据某些数据位计算relevancea user到另一个算法user.
不幸的是,自从大约十年前离开学校以来,我的数学技能已经恶化,因此,我非常挣扎于此.我发现了一种在线算法,可以将"热门"帖子推到新闻源的顶部,并认为这是一个很好的起点.这是我在网上找到的算法/计算(在MySQL中):
LOG10(ABS(activity) + 1) * SIGN(activity) + (UNIX_TIMESTAMP(created_at) / 300000)
Run Code Online (Sandbox Code Playgroud)
我希望做的是调整上述概念来处理我自己的应用程序中的数据和模型.考虑这个用户对象(修剪):
{
"id": 1
"first_name": "Joe",
"last_name": "Bloggs",
"counts": {
"connections": 21,
"mutual_connections": 16
},
"mutual_objects": [
{
"created_at": "2017-03-26 13:30:47"
},
{
"created_at": "2017-03-26 14:25:32"
}
],
"last_seen": "2017-03-26 14:25:32",
}
Run Code Online (Sandbox Code Playgroud)
上面有三位相关信息需要在算法中考虑:
mutual_connectionsmutual_objects但是考虑到旧物体不应该像新物体那样提高相关性,因此不应该提高created_at场地的相关性.last_seen任何人都可以建议一个相当简单的(如果可能的话)这样做的方式?
这是我的想法,但老实说,我不知道它在做什么,所以我不能确定它是否是一个很好的解决方案,我也错过了,last_seen因为我找不到添加这个的方法:
$mutual_date_sum = 0;
foreach ($user->mutual_objects as $mutual_object) {
$mutual_date_sum =+ strtotime($mutual_object->created_at);
}
$mutual_date_thing = $mutual_date_sum / (300000 * count($user->mutual_objects));
$relevance …Run Code Online (Sandbox Code Playgroud) 我需要编写一个模块来检测类似的文档.我已经阅读了许多关于文档技术和其他指纹的论文,但我不知道如何编写代码或实现这样的解决方案.该算法应适用于中文,日文,英文和德文,或与语言无关.我怎么能做到这一点?
我试图运行堆栈溢出是提供了一个示例在这里.
我在这里再次复制了代码:
from sklearn.feature_extraction.text import TfidfVectorizer
text_files = ['file1.txt', 'file2.txt']
documents = [open(f) for f in text_files]
tfidf = TfidfVectorizer().fit_transform(documents)
# no need to normalize, since Vectorizer will return normalized tf-idf
pairwise_similarity = tfidf * tfidf.T
Run Code Online (Sandbox Code Playgroud)
我添加的唯一内容就是这一行:
text_files = ['file1.txt', 'file2.txt']
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,我收到此错误:
File "C:\Python33\lib\site-packages\sklearn\feature_extraction\text.py", line 195, in <lambda>
return lambda x: strip_accents(x.lower())
AttributeError: '_io.TextIOWrapper' object has no attribute 'lower'
Run Code Online (Sandbox Code Playgroud)
在file1.txt和file2.txt输入的文本文件.我使用了错误的格式text_files吗?这个错误的原因是什么,我该如何解决?我真的很感激任何帮助.
我有2个文本如下
Text1:John喜欢苹果
Text2:迈克讨厌橙色
如果你检查上面的2个文本,它们在语法上都是相似的,但在语义上有不同的含义.
我想找到
1)2个文本之间的句法距离
2)2个文本之间的语义距离
有没有办法使用nltk这样做,因为我是NLP的新手?
我有以下情况,我想解决Python(最好使用numpy和scipy):
我如何实现这一目标Python?我知道我可以scipy.sparse.coo_matrix用来表示文档作为稀疏向量并使用点积找到余弦相似度,但是如何将整个语料库转换为大而稀疏的术语文档矩阵(这样我也可以将它的行提取为scipy.sparse.coo_matrix行向量)?
谢谢.