awtk/tools/word_gen
2020-02-06 08:47:28 +08:00
..
.gitignore add word_gen 2018-06-26 14:47:03 +08:00
gen_words_json.js improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00
package-lock.json improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00
package.json improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00
README.md improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00
to_words_bin.js improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00
words.bin improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00
words.json improve word_gen and add how_to_gpinyin_data.md 2020-02-06 08:47:28 +08:00

抓取网页,生成输入法联想词库。

生成数据

在当前目录下运行:

  • 准备
npm install
  • 抓取网页生成words.json

可以修改maxURLS改变最大网页数量。

node gen_words_json.js 
  • 生成二进制的words.bin文件

可以根据自己的需要进行编辑words.json。

node to_words_bin.js

更新数据

在awtk根目录下运行

./bin/resgen tools/word_gen/words.bin src/input_methods/suggest_words.inc 

注意:

node_modules/segment/lib/module/DictTokenizer.js#getChunks 可能导致OOM。

如果遇到问题可以限制chunks.length的大小如下面限制为5000。

let getChunksCallsNr = 0;
var getChunks = function (wordpos, pos, text) {
  var words = wordpos[pos] || [];
  // debug('getChunks: ');
  // debug(words);
  // throw new Error();
  var ret = [];
  if(getChunksCallsNr > 150) {
    throw "get Chunks error";
  }
  
  getChunksCallsNr++;
  for (var i = 0; i < words.length; i++) {
    var word = words[i];
    //debug(word);
    var nextcur = word.c + word.w.length;
    if (!wordpos[nextcur]) {
      ret.push([word]);
    } else  {
      var chunks = getChunks(wordpos, nextcur);
      for (var j = 0; j < chunks.length && j < 5000; j++) {
        ret.push([word].concat(chunks[j]));
      }
    }
  }
  getChunksCallsNr--;

  return ret;
};