您可以以稍微不同的方式使用NLP——读取整个JS文件,对其进行标记化并构建令牌频率表;使用此数据应用您已经概述的逻辑。我尝试使用wink-nlp在6.6MB JS文件上执行此操作,并在intel 2.2GHz i7 MacBook Pro上在约5秒内生成了频率表。以下是Node.js代码供您参考:
const fs = require( 'fs' );
const winkNLP = require( 'wink-nlp' );
const model = require( 'wink-eng-lite-web-model' );
const its = require( 'wink-nlp/src/its.js' );
const as = require( 'wink-nlp/src/as.js' );
const rawJS = fs.readFileSync( '<your-js-file-with-path>', 'utf8' );
const nlp = winkNLP( model );
const doc = nlp.readDoc( rawJS );
const ft = doc.tokens().out( its.normal, as.freqTable );
以下是部分输出:
[ '\n', 160960 ],
[ '.', 125520 ],
[ '(', 108440 ],
[ '/', 106480 ],
[ '=', 95040 ],
[ ')', 74800 ],
[ ';', 64120 ],
.
.
[ '{', 16640 ],
[ '}', 16640 ],
[ 'const', 15920 ],
.
.
const
和let
表达式、var
关键字、箭头函数。 - Stephen.W