Forum Discussion

NBR_22's avatar
NBR_22
Frequent Visitor
2 years ago

Spell Check PowerBI

Hello,

 

I want to do spell check for each row in a column, is there a function or something that I can use to check spell check and return a false or true if the word is correctly spell?

 

Regards,

Nicolas Blanco

4 Replies

  • pmreis's avatar
    pmreis
    Most Valuable Professional

    Hi NBR_22 

    Natively there isn't a way to do it as per my knowledge. However you can create a custom function which uses a spell checking API. 

    For instance, using the Bing Spell Check API:

    1. Sign up for the Bing Spell Check API and get your API key.
    2. Create a custom function in Power Query to call the API.
    3. Invoke the custom function on each row

      Here is some sample code, auto generated by AI, I didn't test it:

     

    let
        CheckSpelling = (word) => 
        let
            apiUrl = "https://api.cognitive.microsoft.com/bing/v7.0/spellcheck?text=" & word,
            headers = [#"Ocp-Apim-Subscription-Key" = "Your_API_Key_Here"],
            source = Json.Document(Web.Contents(apiUrl, [Headers=headers])),
            result = source[flaggedTokens] // Check if there are any flagged tokens
        in
            List.IsEmpty(result) // Returns true if the word is correct, false otherwise
    in
        CheckSpelling​



     


    Pedro Reis - Data Platform MVP / MCT
    Making Power BI and Fabric Simple

    If my response resolved your issue, please mark it as a solution to help others find it. If you found it helpful, please consider giving it a kudos. Your feedback is highly appreciated!

    Find me at LinkedIn
    • NBR_22's avatar
      NBR_22
      Frequent Visitor

      pmreis Thank you for your response, will this require a PowerBI Premium License? Currenltly using the PowerBI RS Version.

  • While I strongly believe that DAX first purpose isn't dedicated for such operation but here is an example :

    The most simple way (especially of your data isn't huge) : 
    You'd need a reference list (dictionary) of correctly spelled words. Create a relationship between your data table and this dictionary.

     

    SpellCheck =
    IF(
    ISBLANK(RELATED('Dictionary'[Word])),
    "False",
    "True"
    )

     




    This will return "False" if the word does not exist in the dictionary, and "True" otherwise.Eventhough being easy, this approach only works for individual words and not phrases. Handling multi-word phrases or sentences would be much more complex.

     

    Or you can use this API Spell Check (this is a thread about it https://stackoverflow.com/a/59588277)

    You can also use a Python script : 

    import pandas as pd
    from spellchecker import SpellChecker
    
    data = dataset
    
    spell = SpellChecker()
    
    data['IsCorrectlySpelled'] = data['YourColumnName'].apply(lambda x: x not in spell.unknown([x]))
    
    output = data
    

    or using R you may need to install the hunspell package : 

    library(hunspell)
    
    data <- dataset
    
    # This will return a list where each element corresponds to a word from the input.
    # TRUE means the word is correct, FALSE means it's not recognized.
    correctly_spelled <- hunspell_check(data$YourColumnName)
    
    data$IsCorrectlySpelled <- correctly_spelled
    
    output <- data