我从lenz的答案中提出了一个建议来产生所有的排列,并试图使用Conditional Probabilities from Azure,但收效甚微。该服务仍处于测试阶段,当然对我们的测试信息没有帮助。进入的短信会有很大差异,所以我们似乎不太可能创建模型并测试可能的排序。
在我们的特殊情况下,我们确定运营商(Sprint)基于空格分解消息,并且每条消息最多只能发送160个字符。根据这些数据,我们生成了每条消息的可能排序,以查看运营商是否会以这种方式破坏消息。根据以上3条消息,这些消息有6种可能的排序顺序。 (下同)
1-2-3
1 -> 2: 96 + " I" = 98. 98 < 160 - Not a valid possibility
2 -> 3: 159 characters + " been" = 164. 164 >= 160 - OK
1-3-2
1 -> 3: 96 characters + " been" = 101. 101 < 160 - Not a valid possibility
3 -> 2: 157 characters + " I" = 159. 159 < 160 - Not a valid possibility
2-1-3
2 -> 1: 159 characters + " needed" = 166. 166 >= 160 - OK
1 -> 3: 96 characters + " been" = 101. 101 < 160 - Not a valid possibility
2-3 -1
2 -> 3: 159 characters + " been" = 164. 164 >= 160 - OK
3 -> 1: 157 characters + " needed" = 164. 164 >= 160 - OK
3-2-1
3 -> 2: 157 characters + " I" = 159. 159 < 160 - Not a valid possibility
2 -> 1: 159 characters + " needed" = 166. 166 >= 160 - OK`
3-1-2
3 -> 1: 157 characters + " needed" = 164. 164 >= 160 - OK
1 -> 2: 96 + " I" = 98. 98 < 160 - Not a valid possibility
你可以从上面的计算中看到的唯一有效组合是2-3-1。其他组合将打破不同。在我们有1种可能性的情况下,我们用它作为“答案”。
如果我们有超过1种可能性的场景,我们使用了一些基于大写和标点符号的加权算法来寻找最佳拟合。如果在此之后我们仍然无法确定答案,我们会根据收到的消息的顺序获得最高的加权结果(它们大多数时间按正确的顺序排列)。
你有没有包含元数据的全部信息,或只有文本? – lenz
我们唯一的元数据是消息传递的时间。传递时间戳的顺序也不正确。 –
@ShaunBowe想知道你从哪里得到这些数据。它是可共享的吗? – Daniel