Machine learning 相似性检测技术能否应用于格式化为大ASCII编码整数字节数组的文本文档?

Machine learning 相似性检测技术能否应用于格式化为大ASCII编码整数字节数组的文本文档?,machine-learning,cosine-similarity,locality-sensitive-hash,Machine Learning,Cosine Similarity,Locality Sensitive Hash,我想检测文件之间的相似性。一种方法是对文件进行编码,以减少相似性算法的输入空间,第二种方法是对结果进行更精确的计算。这是通过只考虑文档的信息性特征来实现的。一种方法是按照tf idf频率将文件转换为向量空间转换,该频率可放大信息量非常大的术语,并缩小频繁术语。我的问题是,在不保留文本表示形式的文档中是否可以实现这一点。例如,假设首先将文档转换为一个大整数数组,其中其字符表示为ASCII值。hmm有趣的问题。答案是否定的 文本文档是指同义词、搭配、后缀、前缀(词干) 大整数字节数组无法覆盖所有这些

我想检测文件之间的相似性。一种方法是对文件进行编码,以减少相似性算法的输入空间,第二种方法是对结果进行更精确的计算。这是通过只考虑文档的信息性特征来实现的。一种方法是按照tf idf频率将文件转换为向量空间转换,该频率可放大信息量非常大的术语,并缩小频繁术语。我的问题是,在不保留文本表示形式的文档中是否可以实现这一点。例如,假设首先将文档转换为一个大整数数组,其中其字符表示为ASCII值。

hmm有趣的问题。答案是否定的

文本文档是指同义词、搭配、后缀、前缀(词干)

大整数字节数组无法覆盖所有这些内容。因此,比较转换成字节数组的文件并不能告诉您是否有类似的文本


将此答案作为您的标题的答案。您的问题主体相当复杂,似乎您正在将更多的东西混合在一起(这很难理解)-也许提出更简单的问题会有所帮助…

如果您不介意TF-IDF方法,Bloom filter适合您的情况:
通过这种方式,您可以根据您对误报的容忍度使向量任意变小或变大

无论如何,看看NLP工具包,大多数算法都可以适应任务,问题是如何指定相似性

如果您可以指定不同的文档类别,那么值得研究朴素贝叶斯,或者如果您希望以不同的方式定义相似性,MaxEnt模型可能适合您:

正如@Ivan Koblik指出的那样,在字节数组中对文档进行编码并不是一个问题,因为文本总是用数字数据进行编码。您的任务是一个标准的文档相似性检测问题。我建议采取以下步骤:

预处理
  • 解码
  • 标记化
  • 箱子折叠
  • 删除停止词
  • 堵塞
生成特征
  • 正如你所指出的,tf idf可能是一个不错的选择
  • 一组加权特征构成高维向量
指纹 使用
simhash
或,可以将高维向量转换为
f位
指纹,例如
f=64
。这正是谷歌用于搜索的技术

我们维持一个 f维向量V,其每个维度都初始化为零。将特征散列为f位散列值。这些f位(特征特有)递增/递减 向量的f分量由该特征的权重决定 如下所示:如果散列值的第i位是1,则V的第i个分量增加该特征的权重; 如果哈希值的第i位为0,则第i个分量 V的重量随该特征的重量而减小。什么时候 所有特征都已处理,V的某些组件已 积极的,而其他人是消极的。组件的符号 确定最终指纹的对应位

然而,在您的例子中,您可能会发现其他相似性函数(如余弦距离或欧几里得距离)的性能更好。如果
simhash
不适合您,请尝试为您的问题找到最佳相似性函数

查询类似文档 为每个文档生成指纹后,相似的文档应该具有相似的指纹(相似意味着它们的指纹的汉明距离很小)。有关更多详细信息,请参阅

编辑
如果您不能执行第一步,即解码,则仍然可以简单地计算每个唯一整数的出现次数。您可以将tf idf应用于这些唯一整数,并遵循子序列步骤

我不确定我是否完全理解你的问题。字符总是用一些数值表示,可以是ASCII或UNICODE。您的方法与标准方法有何不同?此外,我认为没有必要使用tf idf将文本编码为向量,例如,bloom filter可以按原样使用。@IvanKoblik如果您制作字典(单词ID),然后应用bloom filter,则它是tf idf的基本版本(是否显示单词)bloom filter???bloom filter是一种概率数据结构。我说的是编码问题。我的意思是,在一些python库中,当scikit了解到文件是基于单词处理的。首先是索引词汇结构,然后是术语频率阶段。我不想这样。我希望被视为一个字节序列。@好奇“文本表示不保留”是什么意思?(例如词序)?@xhudik am将文本视为字节流。相似性检测算法的输入不是包含单词的文本,而是数值。因此无法确定单词的频率,或者是?我不希望基本单元块是单词,而是一个字节流。可能正文可以重新表述为:是否有其他技术可以将文本转换为包含整数和值的字节数组除了在文本上应用词频操作外,这有助于检测相似性?是的,更清楚!最有可能的是,有一些,但我想他们都分享了tf idf的基本理念(据我所知)…你能列举一些吗?如果有一些人和他们分享tf idf的想法,那么整数字节vectorshmm就没有什么好运气了,除了tf idf,我没有做过任何其他的工作,所以我无能为力。无论如何,看看:还有一些其他技术,但是,它们看起来像tf idf的改进版。我会坚持使用tf idf,但这取决于你的最终目标是什么……是否有任何东西禁止我使用tf idf技术