我试图把大量的短字符串解析成一些逻辑部分。似乎有人已经解决了一个有趣的问题,但我找不到任何论文/解决方案(或者我尝试了错误的关键字)。
弦有2-5个部分。如果我用每一个词代替一封信,上面写着它所属的“部分”/“部分”,下面是它们的一个例子:
AAABB
AABBBBCC
AABBBBDD
AAACCDD
...
大多数“部分”只有2-3个字长,在~10 k字符串中有大约100-500个完全相同的部分。也就是说,在100个字符串中有aaa==“some text here”,在其他100个字符串中有aaa==“some other text”。在一个字符串中,每种类型只能有一个部分(它们通常按顺序排列)。任何部分都没有有限的值集,将来可能会出现新值。
问题是:如果我有足够的样本,并且不想手动标记,如何检测这些部分?这可以被监视/确认,而不是完全自动的,所以概率列表是可以的。
我只是想简单地列出2-5个长单词n-grams并找出概率,但这并没有考虑顺序(这可能会有所帮助)。它还可以检测到一些文本是常见的,但是如果我有一些特定的2个部分,并且经常使用相同的值,那么这个方法就不能很好地工作。假设我只有由ABCD组成的字符串,每行中的值相同:
ABC
ABD
ACD
只做ngram分析,我将很有可能成为一个部分,以及ab,c和d。我想在这种情况下从结果中消除ab,但以一种方式,不分配自己的部分到像“the”这样的词,并消除所有较大的部分恰好包含“the”。
对于类似的问题有什么已知的解决方案吗?