2017-07-25 21 views
0

我試圖找到一種方法來使用認知服務來檢測一個字符串是否包含一段連貫的文本或只是垃圾。例如:有無論如何使用認知服務來檢測一個字符串是否包含單詞與只是垃圾轉移字符/亂碼?

SDF#%#ASFSDS b

VS

大家好,我的名字叫薩姆。

這似乎是不可能做到的。我想通過關鍵字文本分析來運行文本(這會給我一個關鍵字ASDSDS(多麼有用!)),然後通過必應拼寫檢查運行該關鍵字。我不確定在美國發生了什麼,但看起來ASFSDS是英語。它真的很...呃..啞巴。

我試過通過一堆服務(如語言檢測)運行類似的文本,他們都似乎相信我的亂碼樣本是100%連貫的英語。

我打算在星期五去測驗一個MS代表的問題,但我想知道是否有人用Cognitive服務實現了這樣的效果?

回答

1

而不是一個二進制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 
    } 
    ] 
} 

你會注意到有幾個特質的:

  1. 概率爲負。這是因爲它們是對數的。
  2. 所有術語都是大小寫合併的。這意味着語料庫不會將 區分出來,比如GOAT和山羊。
  3. 來電必須爲EN-US市場進行 一定量的正常化自己(的 sam.注概率VS sam
  4. 語料庫纔可用。根據您的使用情況,這可能會產生問題 。

一種先進的使用情況下,將計算條件概率,在單詞的上下文中它前面一個字的即概率。

+0

謝謝cthrash。這看起來很有希望。你有沒有關於規範文本的最佳方法的提示?我認爲只有英文版我才能刪除任何不是[A-Za-z]的東西。但是,如果/當他們增加對更多語言的支持時,這種方法不會很好地工作(或根本不工作)。 – Sam

+0

我不知道WebLM的標記化是否公開。例如,您不希望將所有非字母數字的字符都去掉,特別是如果您想標記「good#%&'爲非字詞。現在可以保持簡單,比如說,刪除任何標點符號,然後是空格。 – cthrash

相關問題