功能:为了获取单词的词频和单词清单
程序里边的系统内:网上找了个超级简洁的语义库(不包括音标),暂时不公开了,有点大;主要作用是背单词的
比如给定一篇文章,比如新2022年二十大英文报告,去分析一下这个报告词频,然后整理出单词清单,搞出一个类似单词+意思(不包括音标)的列表;就这个作用。
把文章选择后点,第一次复制;然后点运行,运行提示ok,
后面就是结果了
// 第一次粘贴是单词清单,没有词频率
// 第二次粘贴是未在库里的单词,需要解释的
// 第三次粘贴是库里的单词1=2+3
// 第四次是有词频的单词总清单
//20221029,获取英文单词频率
var result =['ok']let copyStr=app.data.copyStr
let inarr=copyStr.split("\r\n")
let outstr=''
let word=''
let str=''
let wordlist=''//仅仅是单词清单
let wordnotfind=''//不在库中,要baidu的
let wordcut=''//去除重复ing ly等形式后的单词清单
let newarr=[]
let newarr2=[]
let newarr4=[]
let newarr3=[]
let jsnew={}
let isre=false
for(let m=0;m<inarr.length;m++)
{
str=inarr[m];
for(let i=0;i<str.length;i++)
{
if(isaz(str.charAt(i))){word=word+str.charAt(i)}
else{ if(word.trim()!=='')
{// 如果找不到就是新增词汇
if(!newarr.includes(word.toLowerCase()))
{newarr.push(word.toLowerCase());jsnew[word.toLowerCase()]=1;}
else{jsnew[word.toLowerCase()]=jsnew[word.toLowerCase()]+1}
}
word='';}
if(i==str.length-1)
{
if(word.trim()!=='')
{// 如果找不到就是新增词汇
if(!newarr.includes(word.toLowerCase()))
{newarr.push(word.toLowerCase());jsnew[word.toLowerCase()]=1;}
else{jsnew[word.toLowerCase()]=jsnew[word.toLowerCase()]+1}
}word='';}
}
}
// 导出wordlist
for(let ni=0;ni<newarr.length;ni++)
{
if(newarr[ni]!=='')
wordlist=wordlist+newarr[ni]+'\r\n'
}for(let ni=0;ni<newarr.length;ni++)
{
if(app.findphs(newarr[ni]).w!=='')
{ newarr2.push(app.findphs(newarr[ni]).w)}
else{newarr4.push(newarr[ni])}
}for(let ni=0;ni<newarr2.length;ni++)
{
if(!newarr3.includes(newarr2[ni].toLowerCase()))
{ newarr3.push(newarr2[ni])}
}
for(let ni=0;ni<newarr3.length;ni++)
{
if(newarr3[ni]!=='')
wordcut=wordcut+newarr3[ni]+'\r\n'
}
for(let ni=0;ni<newarr4.length;ni++)
{
if(newarr4[ni]!=='')
wordnotfind=wordnotfind+newarr4[ni]+'\r\n'
}
function isaz(val){
var regPos = /[a-zA-Z]/;
if(regPos.test(val)){
return true;
}else{
return false;
}
};let outjnew='';
for (var key in jsnew )
{
outjnew=outjnew+key+'\t'+jsnew[key]+'\r\n'
}
app.data.outArr=[]
app.data.outArr.push(wordlist);
app.data.outArr.push(wordnotfind);
app.data.outArr.push(wordcut);
app.data.outArr.push(outjnew);
// 第一次粘贴是单词清单,没有词频率
// 第二次粘贴是未在库里的单词,需要解释的
// 第三次粘贴是库里的单词1=2+3
// 第四次是有词频的单词总清单app.data.outStr=wordcut;//把数据传递出去剪贴板数据
app.setData({
result:'ok'
});
result;//不要修改,这里就是反馈函数的值给外面
下面这个版本,是增加了是否有音标,只能在本小程序使用
//20221029,获取英文单词频率
//20221031,查看多少不在音标库中
let jph=app.getphlist()//获取js格式的单词音标库
var result =['ok']
let copyStr=app.data.copyStr
let inarr=copyStr.split("\r\n")
let outstr=''
let word=''
let str=''
let wordlist=''//仅仅是单词清单
let wordnotfind=''//不在库中,要baidu的
let wordcut=''//去除重复ing ly等形式后的单词清单
let newarr=[]
let newarr2=[]
let newarr4=[]
let newarr3=[]
let jsnew={}
let isre=false
for(let m=0;m<inarr.length;m++)
{
str=inarr[m];
for(let i=0;i<str.length;i++)
{
if(isaz(str.charAt(i))){word=word+str.charAt(i)}
else{ if(word.trim()!=='')
{// 如果找不到就是新增词汇
if(!newarr.includes(word.toLowerCase()))
{newarr.push(word.toLowerCase());jsnew[word.toLowerCase()]=1;}
else{jsnew[word.toLowerCase()]=jsnew[word.toLowerCase()]+1}
}
word='';}
if(i==str.length-1)
{
if(word.trim()!=='')
{// 如果找不到就是新增词汇
if(!newarr.includes(word.toLowerCase()))
{newarr.push(word.toLowerCase());jsnew[word.toLowerCase()]=1;}
else{jsnew[word.toLowerCase()]=jsnew[word.toLowerCase()]+1}
}
word='';}
}
}
// 导出wordlist
for(let ni=0;ni<newarr.length;ni++)
{
if(newarr[ni]!=='')
wordlist=wordlist+newarr[ni]+'\r\n'
}
for(let ni=0;ni<newarr.length;ni++)
{
if(app.findphs(newarr[ni]).w!=='')
{ newarr2.push(app.findphs(newarr[ni]).w)}
else{newarr4.push(newarr[ni])}
}
for(let ni=0;ni<newarr2.length;ni++)
{
if(!newarr3.includes(newarr2[ni].toLowerCase()))
{ newarr3.push(newarr2[ni])}
}
for(let ni=0;ni<newarr3.length;ni++)
{
if(newarr3[ni]!=='')
wordcut=wordcut+newarr3[ni]+'\r\n'
}
for(let ni=0;ni<newarr4.length;ni++)
{
if(newarr4[ni]!=='')
wordnotfind=wordnotfind+newarr4[ni]+'\r\n'
}
function isaz(val){
var regPos = /[a-zA-Z]/;
if(regPos.test(val)){
return true;
}else{
return false;
}
};
let outjnew='';
let outnoph_list='';
for (var key in jsnew )
{
outjnew=outjnew+key+'\t'+jsnew[key]+'\r\n'
if(jph[key]==undefined)
outnoph_list=outnoph_list+key+'+'
}
app.data.outArr=[]
app.data.outArr.push(wordlist);
app.data.outArr.push(wordnotfind);
app.data.outArr.push(wordcut);
app.data.outArr.push(outjnew);
app.data.outArr.push(outnoph_list);
// 第一次粘贴是单词清单,没有词频率
// 第二次粘贴是未在库里的单词,需要解释的
// 第三次粘贴是库里的单词1=2+3
// 第四次是有词频的单词总清单
// 第5次是不在音标库里的单词清单
app.data.outStr=wordcut;//把数据传递出去剪贴板数据
app.setData({
result:'ok'
});
result;//不要修改,这里就是反馈函数的值给外面