而不是一个二进制is-word-or-not问题,你可能会考虑的是一个词是胡言乱语的概率。然后,您可以选择一个您喜欢的阈值。
对于计算单词probalities,你可以试试网页语言模型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
}
]
}
你会注意到有几个特质的:
- 概率为负。这是因为它们是对数的。
- 所有术语都是大小写合并的。这意味着语料库不会将 区分出来,比如GOAT和山羊。
- 来电必须为EN-US市场进行 一定量的正常化自己(的
sam.
注概率VS sam
)
- 语料库才可用。根据您的使用情况,这可能会产生问题 。
一种先进的使用情况下,将计算条件概率,在单词的上下文中它前面一个字的即概率。
谢谢cthrash。这看起来很有希望。你有没有关于规范文本的最佳方法的提示?我认为只有英文版我才能删除任何不是[A-Za-z]的东西。但是,如果/当他们增加对更多语言的支持时,这种方法不会很好地工作(或根本不工作)。 – Sam
我不知道WebLM的标记化是否公开。例如,您不希望将所有非字母数字的字符都去掉,特别是如果您想标记“good#%&'为非字词。现在可以保持简单,比如说,删除任何标点符号,然后是空格。 – cthrash