无论如何使用认知服务来检测字符串是否包含单词而不仅仅是垃圾移位字符/乱码?

时间:2017-07-25 16:39:53

标签: azure microsoft-cognitive azure-cognitive-services

我正在尝试找到一种方法来使用认知服务来检测字符串是否包含一段连贯的文本或者只是垃圾。例如:

  

SDF#%#ASFSDS b

VS

  

我的名字是Sam。

这似乎无法做到。我想通过关键字文本分析运行文本(这会给我一个关键字ASDSDS(多么有用!))然后通过Bing拼写检查运行该关键字。我不确定在美国发生了什么,但似乎ASFSDS是英语。真的很......呃......笨蛋。

我尝试通过一系列服务(如语言检测)运行类似的文本,他们似乎都相信我的胡言乱语的样本是100%连贯的英语。

我将在周五向MS代表进行测试,但我想知道是否有人使用认知服务取得了类似的成绩?

1 个答案:

答案 0 :(得分:1)

而不是二元 is-word-or-not 问题,你可能会考虑的是一个词是乱码的概率。然后,您可以选择自己喜欢的阈值。

对于计算单词probalities,您可以尝试使用Web语言模型API。作为一个例子,你可以看一下联合概率。对于您的单词集,响应如下所示(body语料库的值):

{
  "results": [
    {
      "words": "sdf#%#",
      "probability": -12.215
    },
    {
      "words": "asfsds",
      "probability": -12.215
    },
    {
      "words": "b",
      "probability": -3.127
    },
    {
      "words": "hi",
      "probability": -3.905
    },
    {
      "words": "my",
      "probability": -2.528
    },
    {
      "words": "name",
      "probability": -3.128
    },
    {
      "words": "is",
      "probability": -2.201
    },
    {
      "words": "sam.",
      "probability": -12.215
    },
    {
      "words": "sam",
      "probability": -4.431
    }
  ]
}

您会注意到一些特质:

  1. 概率是负面的。这是因为它们是对数的。
  2. 所有条款均为案例折叠。这意味着语料库不会赢 区别于GOAT和山羊。
  3. 来电者必须执行 一定量的归一化本身(注意概率) sam. vs sam
  4. Corpora仅适用于en-us市场。这可能会有问题 取决于您的使用案例。
  5. 高级用例是计算条件概率,即单词在其前面的单词上下文中的概率