第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在本地機器上利用拼寫檢查器?

在本地機器上利用拼寫檢查器?

手掌心 2021-09-28 14:55:02
我注意到給定機器(Mac、Linux 或 Windows)上的常見應用程序都有各自的拼寫檢查器。從各種 IDE,到 MS Word/Office,再到筆記軟件,應有盡有。我正在嘗試利用我們各自機器的內(nèi)置實用程序來分析字符串的語法正確性。似乎我不能只使用機器上的內(nèi)容,并且可能不得不下載一個字典來進行比較。我不確定是否有更好的方法來實現(xiàn)這一點。我正在考慮嘗試在本地做事,但我并不反對通過 api 或 curl 請求來確定字符串中的單詞是否拼寫正確。我在看:LanguageTool(hello wrold返回錯誤失敗)Google 的 tbproxy 似乎不起作用Dictionary / Meriam-Webster 需要 api 密鑰來實現(xiàn)自動化。我正在查看 Node 包,并注意到拼寫檢查模塊也封裝了單詞表。有沒有辦法完全利用內(nèi)置的機器字典,或者如果我下載字典/詞表進行比較是否理想?我認為單詞表可能是最好的選擇,但我不想重新發(fā)明輪子。其他人做了什么來實現(xiàn)類似的目標?
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

功勞歸于 Lukas Knuth。我想給出一個明確的如何使用字典和 nspell 的方法。


安裝以下2個依賴:


npm install nspell dictionary-en-us

這是我為了解決問題而編寫的示例文件。


// Node File


//  node spellcheck.js [path]

//  path: [optional] either absolute or local path from pwd/cwd


//  if you run the file from within Seg.Ui.Frontend/ it works as well.

//    node utility/spellcheck.js

//  OR from the utility directory using a path:

//    node spellcheck.js ../src/assets/i18n/en.json


var fs = require("fs");

var dictionary = require("dictionary-en-us");

var nspell = require("nspell");

var process = require("process");

// path to use if not defined.

var path = "src/assets/i18n/en.json"


let strings = [];

function getStrings(json){

    let keys = Object.keys(json);

    for (let idx of keys){

        let val = json[idx];

        if (isObject(val)) getStrings(val);

        if (isString(val)) strings.push(val)

    }

}


function sanitizeStrings(strArr){

    let set = new Set();

    for (let sentence of strArr){

        sentence.split(" ").forEach(word => {

            word = word.trim().toLowerCase();

            if (word.endsWith(".") || word.endsWith(":") || word.endsWith(",")) word = word.slice(0, -1);

            if (ignoreThisString(word)) return;

            if (word == "") return;

            if (isNumber(word)) return;

            set.add(word)

        });

    }

    return [ ...set ];

}


function ignoreThisString(word){

    // we need to ignore special cased strings, such as items with

    //  Brackets, Mustaches, Question Marks, Single Quotes, Double Quotes

    let regex = new RegExp(/[\{\}\[\]\'\"\?]/, "gi");

    return regex.test(word);

}


function spellcheck(err, dict){

    if (err) throw err;

    var spell = nspell(dict);

    let misspelled_words = strings.filter( word => {

        return !spell.correct(word)

    });

    misspelled_words.forEach( word => console.log(`Plausible Misspelled Word: ${word}`))

    return misspelled_words;

}


function isObject(obj) { return obj instanceof Object }

function isString(obj) { return typeof obj === "string" }

function isNumber(obj) { return !!parseInt(obj, 10)}


function main(args){

    //node file.js path

    if (args.length >= 3) path = args[2]

    if (!fs.existsSync(path)) {

        console.log(`The path does not exist: ${process.cwd()}/${path}`);

        return;

    }

    var content = fs.readFileSync(path)

    var json = JSON.parse(content);

    getStrings(json);

    // console.log(`String Array (length: ${strings.length}): ${strings}`)

    strings = sanitizeStrings(strings);

    console.log(`String Array (length: ${strings.length}): ${strings}\n\n`)


    dictionary(spellcheck);

}

main(process.argv);

這將返回要查看的字符串子集,它們可能拼寫錯誤或誤報。


誤報將表示為:


首字母縮略詞

單詞的非美國英語變體

例如,未識別的專有名詞、星期幾和月份。

包含括號的字符串。這可以通過將它們從單詞中刪除來增強。

顯然,這并不適用于所有情況,但我添加了一個忽略這個字符串函數(shù),如果它包含開發(fā)人員想要忽略的特殊單詞或短語,您可以利用它。


查看完整回答
反對 回復 2021-09-28
?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊

您的問題被標記為 NodeJS 和 Python。這是 NodeJS 特定的部分,但我認為它與 python 非常相似。


Windows(從 Windows 8 開始)和 Mac OS X 確實有內(nèi)置的拼寫檢查引擎。

  • Windows:“Windows 拼寫檢查 API”是一個 C/C++ API。要將它與 NodeJS 一起使用,您需要創(chuàng)建一個綁定。

  • Mac OS X:“NSSpellChecker”是 AppKit 的一部分,用于 GUI 應用程序。這是一個Objective-C API,因此您需要再次創(chuàng)建一個綁定。

  • Linux:這里沒有“特定于操作系統(tǒng)的”API。大多數(shù)應用程序使用 Hunspell,但也有其他選擇。這又是一個 C/C++ 庫,因此需要綁定。

幸運的是,已經(jīng)有一個名為拼寫檢查器的模塊,它具有上述所有功能的綁定。這將使用其安裝平臺的內(nèi)置系統(tǒng),但有多個缺點:

1) 必須構(gòu)建本機擴展。這個已經(jīng)通過 node-pre-gyp 完成了二進制文件,但這些需要為特定平臺安裝。如果您在 Mac OS X 上開發(fā),運行npm install以獲取包,然后在 Linux 上部署您的應用程序(使用 - 目錄node_modules),它將無法工作。

2) 使用內(nèi)置拼寫檢查將使用操作系統(tǒng)規(guī)定的默認值,這可能不是您想要的。例如,使用的語言可能由所選的操作系統(tǒng)語言決定。對于 UI 應用程序(例如使用 Electron 構(gòu)建),這可能沒問題,但如果您想使用操作系統(tǒng)語言以外的語言進行服務器端拼寫檢查,則可能會很困難。


在基本層面,拼寫檢查一些文本歸結(jié)為:

  1. 標記字符串(例如通過空格)

  2. 根據(jù)已知正確單詞列表檢查每個標記

  3. (獎勵)收集錯誤令牌的建議并為用戶提供選項。

您可以自己編寫第 1 部分。第 2 部分和第 3 部分需要“已知正確單詞列表”或字典。幸運的是,已經(jīng)有一種格式和工具可以使用它:

  • simple-spellchecker可以使用.dic-files。

  • nspell是 Hunspell 的 JS 實現(xiàn),帶有自己的字典包。

  • 例如,可以在此 repo 中找到其他詞典

有了這個,你就可以選擇語言,你不需要構(gòu)建/下載任何本機代碼,你的應用程序?qū)⒃诿總€平臺上運行相同。如果您在服務器上進行拼寫檢查,這可能是您最靈活的選擇。


查看完整回答
反對 回復 2021-09-28
  • 2 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號