开源英文词库 您所在的位置:网站首页 考研单词词库 开源英文词库

开源英文词库

2023-10-07 16:10| 来源: 网络整理| 查看: 265

0 申明 英文词库项目来自 github、我fork了一下。词库文件是基于csv的词库文本文件,具体的可以去github主页去观看项目作者为这个csv文件编写了一个常见语言和数据库的处理接口 1 csv文件格式详解

完整的词库非常大 (222MB)UTF-8编码 请勿用excel打开 词库采用了csv文件的格式来存储单词文件,使用者可以看得见,摸得着! 文本较大、是文本编辑器打开即可看到文件夹的格式。csv文件格式下去自行百度、csv类似于数据库和excel的格式! 下面是词库csv文件的具体格式 加?的是我在项目中没用到的或者我认为没啥用的

word 单词名称 phonetic 音标,以英语英标为主 definition 单词释义(英文),每行一个释义 translation 单词释义(中文),每行一个释义 pos 词语位置,用 "/" 分割不同位置 这个字段我看貌似没啥意思 ? collins 柯林斯星级 ? oxford 是否是牛津三千核心词汇 ? tag 字符串标签:zk/中考,gk/高考,cet4/四级 等等标签,空格分割 bnc 英国国家语料库词频顺序 ? frq 当代语料库词频顺序 ? exchange 时态复数等变换,使用 "/" 分割不同项目,见后面表格 detail json 扩展信息,字典形式保存例句(待添加) 这个在csv为空 audio 读音音频 url (待添加) 这个在csv为空

可以看到项目中词库内容是很全面的 中文释义应该说非常的全面、核心的常见单词其英文释义基本上都有 上述的csv文件还包含短语,缺少英文的例句和发音

例句除了使用爬虫爬取、在线API(如有道在线API…)外我没有发现有啥其他的好办法。 单词发音的这个问题很好解决 参见这个博客的在线发音API接口 https://blog.csdn.net/xj853663557/article/details/82735900 在这里插入图片描述 重点讲一下音频的获取,以上图的链接接口为例 https://ssl.gstatic.com/dictionary/static/sounds/oxford/somewords–_gb_1.mp3 替换链接的somewords为需要的单词 注意:1 全小写 2 不支持空格 使用的2种方法

在线音频的获取 在android端测试时、 我是用MediaPlayer实现的在线播发,效果非常的好 贴出源代码: package cn.adminzero.helloword.util; import android.media.MediaPlayer; import android.text.TextUtils; import android.util.Log; /** * author : zhaojunchen * date : 2019/11/1811:43 * desc : https://blog.csdn.net/xj853663557/article/details/82735900 src detail * 音频播放器类 * 多线程适用-->在子线程播放音频 避免卡死 * MediaPlayUtil player = new MediaPlayUtil(); * player.playword(String word); // 播放单词 */ public class MediaPlayUtil { // 音频链接获取 private static final String TAG = "MediaPlayUtil"; private MediaPlayer mediaPlayer = null; private static String getUrl(String word) { return "https://ssl.gstatic.com/dictionary/static/sounds/oxford/" + word + "--_gb_1.mp3"; } public MediaPlayUtil() { mediaPlayer = new MediaPlayer(); } // 单词发音 public boolean playword(String word) { if (TextUtils.isEmpty(word)) { Log.d(TAG, "playword: " + "单词确缺失"); return false; } final String url = getUrl(word.trim().toLowerCase()); new Thread(new Runnable() { @Override public void run() { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.reset(); try { mediaPlayer.setDataSource(url); mediaPlayer.prepare(); mediaPlayer.start(); } catch (Exception e) { e.printStackTrace(); } } }).start(); return true; } } 使用方法 MediaPlayUtil mediaPlayUtil = new MediaPlayUtil(); mediaPlayUtil.play("yes"); mediaPlayUtil.play("no"); 下载离线的音频MP3 下载方法: 不许使用爬虫 、 使用linux 的wget即可 详细介绍 首先拿到待下载单词的拼写、替换掉链接的somewords、得到新的连接,将连接批量的写到文本文件(一行一个链接) 使用 wget -i url.txt -P ./downloadpath -i 指定url集合的文件 -P指定下载文件夹 2 csv文件解析 实现快速解析,需要干掉逗号! 在csv文件里面 字符串里面是可能存在逗号的,这个和分隔符是冲突的 所以会在字符串加上" xxxxx,xxxxx" 区分逗号 如何识别分号包包装的逗号和作为分割的都号?

首选替换逗号为一个不出现的字符一个在csv文件里面的字符 (这里面我是用的#) 对文件预处理、替换逗号

/** * 对开源词库预处理 * 输入 原文件路径 --> 目的文件路径 */ public static void preparecsv(String filename, String filename_des) throws Exception { File csv = new File(filename); // CSV文件路径 FileWriter fw = new FileWriter(filename_des); BufferedReader br = new BufferedReader(new FileReader(csv)); StringBuffer stringBuffer = new StringBuffer(); StringBuffer temp = new StringBuffer(); String line = null; String tempstring = null; String[] tempbuffer; String splitstring = Character.toString(splitsymbol); char ch; int i, isclose; long count = 1; //* 添加正确的分隔符和id标识*//* try { while ((line = br.readLine()) != null) { line = String.valueOf(count) + "," + line; count++; isclose = 0; temp.setLength(0); for (i = 0; i < line.length(); i++) { ch = line.charAt(i); if (ch == '"') { isclose = (isclose + 1) % 2; } else if (ch == ',' && isclose == 0) { ch = splitsymbol; temp.append(ch); } else if (ch == splitsymbol) { } else { temp.append(ch); } } /** * 舍弃短语 * */ tempstring = temp.toString(); tempbuffer = tempstring.split(splitstring, -1); if (tempbuffer.length != 14) { System.out.println("error"); continue; } tempstring = tempbuffer[1].trim(); if (tempstring.contains(" ")) { continue; } temp.append("\n"); stringBuffer.append(temp); } fw.write(stringBuffer.toString()); fw.close(); } catch (IOException e) { e.printStackTrace(); } }

下面的代码使用tag字段的值筛选出来zk gk cet4 cet6 … 到新的文件 其他的处理使用相同的模板类型模板

public static void wordall(String A, String B) throws Exception { File file = new File(A); // CSV文件路径 BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; StringBuffer stringBuffer = new StringBuffer(); int position = 8; //单词类型在csv的位置 int count = 0; String[] buffer; String splitstring = Character.toString(splitsymbol); String buffer0, buffer1, buffer2, buffer3, buffer4, buffer8, buffer11; /** * wordid,word,phonetic,definition,translation,pos, * collins,oxford,tag,bnc,frq, * exchange,detail,audio * 0 1 2 3 4 11 8 (tag) */ short tag = 0; StringBuffer onlyword = new StringBuffer(); try { onlyword.setLength(0); while ((line = br.readLine()) != null) { buffer = line.split(splitstring, -1); buffer8 = buffer[position].trim(); tag = 0; if (buffer8.contains("zk")) { tag |= tag_zk; } if (buffer8.contains("gk")) { tag |= tag_gk; } if (buffer8.contains("cet4")) { tag |= tag_cet4; } if (buffer8.contains("cet6")) { tag |= tag_cet6; } if (buffer8.contains("toefl")) { tag |= tag_toefl; } if (buffer8.contains("ielts")) { tag |= tag_ielts; } if (buffer8.contains("gre")) { tag |= tag_gre; } if (buffer8.contains("ky")) { tag |= tag_ky; } if (tag == 0) { continue; } count++; //buffer0 = buffer[0].trim() + splitstring; buffer0 = String.valueOf(count) + splitstring; buffer1 = buffer[1].trim() + splitstring; buffer2 = buffer[2].trim() + splitstring; buffer3 = buffer[3].trim() + splitstring; buffer4 = buffer[4].trim() + splitstring; buffer11 = buffer[11].trim() + splitstring; stringBuffer.append(buffer0); stringBuffer.append(buffer1); stringBuffer.append(buffer2); stringBuffer.append(buffer3); stringBuffer.append(buffer4); stringBuffer.append(buffer11); stringBuffer.append(String.valueOf(tag) + "\n"); } } catch (IOException ex) { ex.printStackTrace(); } FileWriter fw = new FileWriter(B); fw.write(stringBuffer.toString()); fw.close(); System.out.println(B + " items is " + count); }

源代码地址 : csvanalyze



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有