分享

震惊!上外学子因缺少研究工具 竟耗费数月自行开发!结果老师惊呆了 辅导员沉默了 同学流泪了!15千上...

 胡萍萍1slpkl66 2019-03-18

历经两百六十个昼夜交替,

历经两千小时的开发设计,

历经数千余页的文献查阅,

历经十万余行的代码修改。

自2018年7月1日敲下Wordless的第一行代码起,

没有前人开源代码的参考,

没有老师同学的协助开发,

没有科研基金的财力支持,(区区硕士也不可能有)

只有无边无尽的自我怀疑。

今天,我终于能够正式宣布Wordless 1.0.0的发布。除去所有空行和注释行,Wordless的第一个正式版共计由26195行Python代码编写而成。

Wordless是一款可用于语言学、文学、翻译学及其他语言相关领域研究的多语种整合型语料处理与分析工具。

Wordless功能强大,目的是全面覆盖语言相关研究领域的各类需求。

Wordless界面友好,致力于时时刻刻都为用户提供最优的使用体验。

Wordless化繁为简,尽其所能为用户优化了语料处理与分析的流程。

Wordless开拓创新,用户轻击几下鼠标即可体验到最新的前沿科技。

Wordless主窗体的下方为文件区,用户在此可打开任意数量的文件,Wordless可自动检测文件的语言、文本类型(是否已分词/标注)和编码。

语言:可选108种,可自动检测其中98种,针对其中75种提供了程度不等的特别支持。

文本类型:支持6种,可自动检测其中4种。

文件编码:支持104种,可自动检测其中38种。

在文件类型方面,Wordless不仅支持txt纯文本文件,还支持Word文档(.doc/.docx)、Excel表格(.xlsx)、CSV文件(.csv)、HTML文件(.htm/.html)。另外Wordless特别提供了对TMX翻译记忆库文件的支持,Wordless可自动提取并拆分源语和目的语文本并分别检测其语种。此外,Wordless还支持LRC歌词文件 Wordless可自动分析提取并根据时间标签生成正确的歌词文本。

自动检测语言及文本类型使用户在大批量导入文件时不必再一个个手动选择,自动检测文件编码则使用户无需再烦恼由于文本来源不同而导致的各类编码问题。用户可以通过菜单进入设置面板禁止自动检测并设置默认值以提高文件打开的速度。为了效率起见,检测时默认只扫描每个文件的前100行,用户同样可在设置面板中进行修改以提高检测的准确率。

Wordless主窗体的上方为工作区,共分为7大模块:

1. Overview

在Overview模块中,用户可对各文本的整体情况有所了解。用户可一键计算每个文本的段落数、句子数、形符数、类符数、字符数(1个字母/汉字/假名等为1个字符)、类符形符比、标准化类符形符比、平均段落长(以句为单位)、平均段落长(以形符为单位)、平均句长(以形符为单位)、平均形符长(以字符为单位)以及1, 2, 3, ..., n个字符长的形符数。

Wordless会自动根据每个文件的语言设置使用内置的分句器、分词器来对文本进行分句和分词,用户只需确保每个文件的语言设置正确无误,无需关心分词的实现细节。用户也可导入已分词的文本(词之间用空格分隔)并将文本类型(Text Type)设置为已分词(Tokenized),Wordless会自动跳过分词阶段而不会破坏已有的分词。

2. Concordancer

在Concordancer模块中,用户可一键搜索任意词在各个文本中给定跨距内的上下文(默认为左10个词至右10个词),同时Wordless会给出每个查找到的节点词位于哪个文件中的第几段、第几句话、第几个词。用户可在右边的设置区域内选择是否将标点视为独立的token,也可修改跨距范围,或修改跨距单位为字符而不是单词(便于对汉语/日语等进行单字查找)。

结果生成后,用户可按文件、token在文本中的位置以及跨距内任意个单词以任意顺序任意组合对结果进行排序,或直接在结果中进行搜索。

此外用户还可一键生成散点图,其结果可按文件或搜索项进行排序。

3. Wordlist

在Wordlist模块中,用户可按文件生成词表,统计每个词在各个文本中的绝对/相对频数,还可应用不同的算法来计算每个词的dispersion(分布)和adjusted frequency(校准频率,可用于词典学和教学法研究等)。在结果生成后,用户可按任一统计量来对结果作进一步筛选或直接在结果中进行搜索。

Wordless目前支持7种dispersion计算方法以及5种adjusted frequency计算方法。

此外,用户还可一键生成折线图以可视化的形式对多个文件进行对比,或生成词云图查看单个文件内的单词频数情况。

4. N-grams

在N-grams模块中,用户的关注对象不再是单个单词,而是两个或两个以上连续(n-gram)或不连续(skip-gram)的单词。用户可一键统计任意长度至任意长度所有n元组的绝对/相对频数,计算每个n元组的dispersion和adjusted frequency,或生成折线图/词云图来对数据进行可视化分析。

5. Collocation

在Collocation模块中,用户可一键搜索某词在各文本中给定跨距内(默认为左5个词至右5个词)的所有潜在搭配词,并对每一组搭配作显著性检验,计算其统计量、p值(p-value)、贝叶斯因子(bayes factor)以及效应量(effect size)。同样,用户可对结果进行筛选、或在结果中进行搜索,也可生成折线图或词云图来对数据作可视化分析。

Wordless目前针对Collocation模块提供了5种显著性检验方法、1种贝叶斯因子计算方法以及13种效应量计算方法。

6. Colligation

Colligation模块和Collocation模块相类似,只是用户的关注对象从某个单词的潜在搭配词变为了潜在搭配词的词性,Wordless会自动根据每个文件的语言设置对尚未作词性标注的文件进行批量标注,然后对每一组潜在的搭配作显著性检验并计算其统计量、p值、贝叶斯因子及效应量。

此外,用户还可在设置面板中选择将所有语种的标签映射至Universal POS tags,便于不同语种间的词性比较。用户可直接使用Wordless中预置的映射表,也可对其进行修改,或根据自身研究需求将任意语种的任意词性标签映射至其他任意标签。

7. Keywords

在Keywords模块中,用户可一键搜索各观察文本在给定参考文本情况下的潜在关键词(keywords, 在观察文本中的频数显著大于或小于其在参考文本中频数的词),并对每一个潜在关键词作显著性检验,计算其统计量、p值、贝叶斯因子及效应量。

Wordless目前针对Keywords模块提供了5种显著性检验方法、2种贝叶斯因子计算方法以及5种效应量计算方法。

同样,用户可对结果进行筛选,或在结果中进行搜索,还可一键生成折线图或词云图来对数据作可视化分析。

以上是Wordless中7大模块的主要使用方法,不过为了使Wordless的功能更强大、更灵活、更具可扩展性、覆盖更多的研究需求,我还在许多细节之处进行了一些优化。

1. 一键导出/保存

在Wordless中,用户可一键导出Wordless中生成的所有表格,Wordless目前提供Excel格式(.xlsx)和CSV纯文本格式(.csv),后者便于用户使用R等统计工具对导出的数据作进一步分词和处理。用户还可对Wordless中生成的图表进行拖拽、缩放,修改图表标题、坐标轴标签或进行其他修改,完毕后用户可直接将图表保存至电脑上的任意位置。

2. Token Settings

在“Token Settings”(Concordancer模块除外)中,用户可修改token的定义范围,用户可自由选择过滤/保留全小写单词、首字母大写词(用于专有名词的研究等)、全大写词(用于研究小说中作者故意大写而具有特殊含义的词等)、含数字的词(用于数字词研究等)以及标点(用于标点符号的专门研究等)。

此外,用户还可选择对文本中的每个词作词形还原(took → take),或使用Wordless内置的停止词表来过滤停止词(a/the/at 等极其常见但在研究结果中无法提供有效信息的词),用户也可在设置面板中导出内置的停止词表加以修改后再次导入或直接创建契合自己研究需求的词表,从而实现了过滤文本中任意词的功能。

如果用户提供的文本带有标签,用户在此还可选择过滤数据中的所有词性标签或非词性标签或所有标签。此外用户还可选择只使用文本中的标签数据,在Overview模块中即可查看所有标签的整体统计数据,在Wordlist和N-grams模块中即可生成标签的词表以及n元组,在Collocation/Colligation模块中即可搜索标签间潜在的搭配关系,在Keywords模块中即可查找潜在的“关键词性”。

3. Search Settings

在“Search Settings”中(Overview模块除外),用户在搜索时可选择是否忽略大小写、匹配完整单词(若否,搜索happy会匹配出unhappy)、匹配所有屈折变化形式(搜索take或took可一次性匹配出take/took/taken/taking/takes等)、使用正则表达式(一种已有标准的文本检索语言)、匹配时忽略标签或只匹配标签部分。搜索项可以是单个词,也可以是由空格分隔的任意个单词,用户也可开启multi-search mode,即可一次输入多个搜索项。

在Concordancer、N-grams、Collocation、Colligation模块中,用户还可在“Context Settings”中进一步限定搜索项在给定跨距内的上下文必须出现某个词或不得出现某个词。在对上下文进行限制匹配时,搜索项同样既可以是单个词,也可以是多个单词,在多个单词的情况下计算跨距时以首个单词的位置为准。

在对上下文环境进行匹配或在结果中进行后期搜索时,上述所有选项也同样适用。

4. Table Settings

在“Table Settings”中,用户可选择表格中是否显示百分比数据、是否显示累计数据以及是否显示各文件的单独统计数据(若否则只显示Total列)。若用户选择显示累计数据,Wordless会自动将累加后有意义的统计量进行累加显示,并保留其他统计量为其原始值。

5. Filter Results

在大多数模块中(Overview模块除外),用户可在结果生成后对其作进一步过滤,过滤条件可以是任一统计量,也可以是token(s)的字符长度,用户可设置任一项的上下限并任何组合以满足自身的研究需求。

6. Preview

Wordless为部分语言提供了不止一种分句器/分词器/分词还原器/词性标注器/词形还原器,用户在设置面板中可针对各语种自由切换并在下方进行预览。用户也可直接将待处理文本粘贴至左边的输入框中,稍等片刻即可提取右边预览框中显示的结果。

Wordless还为汉语/日语提供了专门的“单字分词器”,在汉语环境下,Wordless会将每个汉字都切分为一个独立的token,而遇到英语或其他语种的单词时会自动按英语或其他语种进行分词,而不是盲目得切分为一个个字母。在日语环境下,汉字依旧会被视为一个个独立的token,而平假名/片假名会自动改用日语分词器进行切分,英文及其他语种也会改用对应语种的分词器进行切分,这是因为假名和英文字母均不同于汉字,前者表音,后者表意,因此将假名和英文字母单个拆分一般没有研究意义。

7. Dispersion/adjusted frequency/显著性检验/效应量

Wordless为dispersion和adjusted frequency计算方法以及部分显著性检验方法和效应量计算方法提供了更详细的细节支持,用户可在设置面板中进行修改。比如,用户可修改在计算dispersion和adjusted frequency时将每个文本分割成的子文本数(默认为5),设置z-score为双尾/单尾检验,设置双样本t检验使用绝对/相对频数、是否具有齐方差性(若否,改用Welch's t检验),设置卡方检验时是否应用亚茨连续性校正,设置费希尔精确检验为双尾/左单尾/右单尾或设置曼惠特尼U检验使用绝对/相对频数、作双尾/左单尾/右单尾检验以及是否应用连续性校正等。

限于篇幅,我无法对所有细节都作详细说明,用户可在实际使用时慢慢摸索。如遇任何问题,可参考Wordless主页上的文档、在Github上提issue或通过邮件等方式联系我。

这里再说明非常重要的一点,Wordless完全免费,且所有源代码均已在Github上开源(GPLv3协议),用户可在遵守Wordless开源许可协议的情况下任意查阅、参考、使用、修改、传播其源代码,避免了我在开发Wordless遇到的没有前人代码可供参考的问题,也避免了不必要的重复劳动。

如您在发表的论文等成果中使用了Wordless,请引用以提高其知名度,用户可在帮助菜单中查看已写好的MLA/APA/GB(国标)格式的引用信息。如您觉得Wordless对您身边的人会有帮助,请转发本文章让更多的人了解到Wordless。如您有Github账号,也可Watch/Star/Fork三连Wordless的仓库以表支持。如您希望为Wordless的后续开发提供资金支持,可扫描主页或帮助菜单中的支付宝/微信二维码向我转账,不使用支付宝/微信的海外用户也可通过PayPal向我提供捐赠。

临近尾声,我想特别感谢:

1. Sun Junyi的jieba(结巴分词)提供汉语支持、Taishi Ikeda(池田大志)的nagisa提供日语支持、Hélios Drupchen Hildt的pybo提供藏语支持、Mikhail Korobov的pymorphy2提供俄语/乌克兰语支持、Wannaphong Phatthiyaphaibun (วรรณพงษ์ ภัททิยไพบูลย์)的PyThaiNLP提供泰语支持、Vu Anh的underthesea提供越南语支持,以及其他为Wordless提供多语种支持的开源项目的作者。

2. Wordless中使用的其他开源项目的作者,如果没有这些开源项目,Wordless必然无法提供既强大又灵活的功能。

3. 明尼苏达大学的Ted Perdersen教授在邮件中耐心解答了我的一些疑问,Wordless中实现了他提出的Minumum Sensitivity和他建议应用在搭配词查找中的费希尔精确检验。

4. 斯德哥尔摩大学的Gunnel Engwall教授扫描了她45年前的博士论文并发送与我,让我得以在Wordless中实现并测试了她提出的Engwall's FM。

5. 在文献查找和软件测试中助我一臂之力的几位同学,虽然可能只涉及Wordless的冰山一角,但也使其在完美的道路上更近了一步。

还有其他在开发过程中助我一臂之力的人,由于我已经记不清了,请恕我无法在此一一列出。

最后,当你们双击Wordless主程序的图标,看到下面这个加载画面时,再稍等片刻,即可享受到Wordless所带来的便捷体验。

主页

https://github.com/BLKSerene/Wordless

下载地址

https://github.com/BLKSerene/Wordless#download

文档

https://github.com/BLKSerene/Wordless#documentation

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多