场景:
先把实际情况说一下,数据量在 9000w 行,每行都是“一个字符串+一个种类”,字符串长度平均在 1000 位左右
1.字符串类似'abcdefg','aabbcc','aabcc',没有实际英语含义。
2.每个字符串都有一个种类, 'dog','cat,'car', 一共 10 种种类。
3.显然数据集的大小是 9000w 行 × 2 列 的 dataframe
目标:
1.想观察出同一个种类的字符串有没有共性,由于字符串没有实际的英语含义,所以我的初步想法是通过最长字串的匹配情况来计算相似度,总结出每个种类下字符串的规则。当新的字符串出现时,我能够通过之前的规则来分类。
期望:
1.不管是算法层面的,机器学习,深度学习,还是 es 这样引擎方面的,希望能和大家讨论讨论可行的方案
2.子串的复杂度有点高...还没有好的思路,想了很久,自闭了。
3.如果我没有表述清楚问题,请指出
1
akira 2018-11-27 19:41:39 +08:00
如果字符串是摘要算法产生的,那就有难度了....
|
2
shylockhg 2018-11-27 20:54:40 +08:00
字符串 hash 画分布图
|
3
shylockhg 2018-11-27 21:06:08 +08:00
映射到向量空间算距离
|
4
pwrliang 2018-11-27 21:32:05 +08:00
AC 自动机不就是解决多个串找字串的吗
|
5
111qqz 2018-11-27 21:34:22 +08:00
目标部分没有看懂,按照题目来说,我理解的是,有一个字符串集合 S,然后求 S 中所有字符串的(最长)公共子串?
|
7
leriou 2018-11-27 22:15:56 +08:00
还是用空间向量计算相似度吧
|
8
ytterbium 2018-11-27 22:15:58 +08:00 via Android
先用最裸的 lstm 做下分类,要是分类正确率还是随机水平那就说明类别与字串无关
|
12
xiyiailoli 2018-11-27 22:47:46 +08:00 via Android
kmp ?
|
13
ccpp132 2018-11-28 05:59:16 +08:00 via Android
先找一个较短的字符串,把它所有子串弄出来。然后拿这些串对剩下的字符串做多模匹配,统计每个子串出现的次数看是否等于总字符串数目
|
15
lihanfeifan 2018-11-28 12:11:13 +08:00
有没有试过前缀树?
|