我需要根据编辑距离/ Levenshtein距离使用ELKI聚类大量字符串。由于数据集太大,我想避免基于文件的预计算距离矩阵。我怎么能
(a)从文件中加载ELKI中的字符串数据(仅“标签”)?
(b)实现访问标签的距离函数(扩展AbstractDBIDDistanceFunction,但如何获取标签?)
某些代码段或示例输入文件会有所帮助。
答案 0 :(得分:1)
实际上非常简单:
A )写一个足以 输入文件格式的Parser
(为什么要尝试重用一个为其编写的解析器?带有标签的数字向量?),可能是子类AbstractStreamingParser
,产生了所需数据类型的关系(可能只需要使用String
。如果你想要更一般TokenSequence
可能对于这些距离来说,这是一个更合适的概念。字符串只是最简单的情况。
B )基于此向量类型而不是DBID实现DistanceFunction
,即PrimitiveDistanceFunction<String>
。同样,子类化AbstractPrimitiveDistanceFunction
可能是最容易的事情。
出于性能原因,您可能还需要查看索引算法以检索例如最有效的k个最相似的字符串。我不确定字符串编辑距离和levenshtein距离存在哪种索引结构。
一位同事的学生显然有一些工作令牌编辑距离,但我还没有看到或审查过这些代码。在处理日志文件时,他可能会使用基于令牌的方法而不是字符。