【新工具】Treetagger在线版之无限制本地增强版 1.0

本文由 李亮1975重庆2013-06-10 发表於 "编程与工具开发" 讨论区

  1. 李亮1975重庆

    李亮1975重庆 语料库快乐军政委

    内容提要
    Treetagger
    在线版之无限制本地增强版,形式上仅仅是一个网页,双击即可运行,貌似在线网页,但是她解除了在线网页版用Javascript的2MB的发送文本容量限制,新增了标注类型转换与剔除的若干功能,让AntConc可以检索“来自treetagger的下划线型词性标注”,适合语料库语言学的建库与检索的需求。

    用法指南】TreeTagger
    在线版之无限制本地增强版 1.0

    http://web4u.setsunan.ac.jp/Website/TreeOnline.htm (在线版TreeTagger,一款优秀的词性标注器)
    访问这个网址,可以在网页的文本框中粘贴英语文本,点“submit”按钮就自动提交给远程服务器而得到赋码结果了,例如我们用"I am running fast."来赋码就得到下面的结果(分别为左栏,中栏,右栏,分别是屈折形,词性标签,原形)……
    I PP I
    am VBP be
    running VVG run
    fast RB fast
    . SENT .
    但是,在线版的TreeTagger借助页面源代码中的Javascript的一个count()函数,对你输入的文本量进行了限制,最大不能超过 2MB(2兆)。超过2兆字节的语料就会遇到“Please decrease the input words”这个提示而无法赋码,count()函数的完整原形如下……
    function Count() {
    var token = document.Tex.corpus.value.length;
    if(token > 2000000){
    alert("Please decrease the input words.");
    return;
    }
    else {
    document.Tex.submit();
    }
    }
    而我们的语料库,20万英语单词就有1.3MB,30万单词就有2MB了,所以当你一次性想要对超过30万单词进行语料赋码的时候,就必须分批到足够小的容量而进行,要么采用本地版的treetagger了。在线版和本地版的treetagger都是赋码结果是每行由3栏组成,3栏之间是制表符间隔的(不是空格哟,虽然看上去是空白一个)。如果你用在线版或本地版treetagger进行了赋码,那你依然无法用AntConc进行检索哟,这是众多语料库操作者面临的一个难题。

    在线版TreeTagger之无限制本地增强版就是在上述背景下而诞生的,“她”就是一个网页,HTM文件而已,采用Javascript编程,因此,双击就可运行,而体积不到7KB。

    她的第1号功能是,解除了2兆容量的上限,让你轻松使用。

    她的第2号功能是,帮你把赋码结果转换为AntConc可以检索的“下划线型词性标注的语料状态”。

    她的第3号功能是,帮你把下划线型标注的语料的标注剔除掉,无论是来自treetagger或其他POS tagger。

    她的第4号功能是:帮你把treetagger的赋码结果转换为XML型标注,便于被其他的针对XML标注的检索工具进行处理。

    她的第5号功能是,把中英文混排的语料进行自动分离,无论是”一行英文后面跟随一行中文“,还是”一句英文后面跟随一句中文“,或是”一行中文后面跟随一行英文“,或是”一句中文后面跟随一句英文“,都可以剔除所有的中文或所有的英文,这个功能在我们建设”平行语料库“的时候频频需要却找不到处理工具呢。例如,我们有如下的语料……

    I love corpus.
    我喜欢语料库。
    This corpus is big.
    这个语料库很大。

    经过第5号功能的”剔除英文“这个按钮,就变成……

    我喜欢语料库。
    这个语料库很大。

    而如果我们点第5个功能的”剔除中文“这个按钮,就变成……

    I love corpus.
    This corpus is big.

    哈哈,这是很实用的功能呢!
    那么,最实用的第2号功能是如何操作的呢?
    首先,你把语料拷贝到操作界面的文本框,然后你点”submit“按钮,等它发送和赋码完毕,你就看到了赋码结果,此刻你就点网页浏览器的菜单的”编辑“中 的”全选“,然后再点菜单的”编辑“中的”拷贝“,这样你就拷贝了赋码结果,然后你再点”后退“按钮,回到刚才的主界面,因为赋码结果是切换到新页面而呈 现出来的!所以,你拷贝了结果到主界面的文本框,然后点”下划线型词性标注的转换“这个按钮就可以了。

    例如,我们有下面的赋码结果……

    This DT this
    corpus NN corpus
    is VBZ be
    big JJ big
    . SENT .


    点了”下划线型词性标注的转换“就转换为……

    This_DT corpus_NN is_VBZ big_JJ ._SENT

    如果你对如何用AntConc检索已经词性赋码的语料这个技能,还不了解,你可以读我的PDF教程
    http://ishare.iask.sina.com.cn/f/33525504.html 《语料检索的速成教程:已经词性赋码语料的检索.pdf》

    如果你对AntConc还没有入门,就读我的另一份教程
    http://ishare.iask.sina.com.cn/f/33651497.html 《语料检索的速成教程:AntConc生鲜入门.pdf》

    下载地址(新浪爱问):
    http://ishare.iask.sina.com.cn/f/37227447.html



     

    附件文件:

  2. 回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    不错,很好用,顶一个。
     
  3. 回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    好东西,先收藏再说了。
     
  4. armstrong

    armstrong 高级会员

    回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    谢谢李博分享!第五个功能,如果汉英标点符号全半角不分,或者出现数字的情况下会出现问题。
     
  5. 李亮1975重庆

    李亮1975重庆 语料库快乐军政委

  6. dzhigner

    dzhigner Moderator

    回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    2MB?2KB就返回"too many words",不明白。。。
     
    Last edited: 2013-06-16
  7. 李亮1975重庆

    李亮1975重庆 语料库快乐军政委

    Treetagger在线版的服务器端对一次接收的数据量有限制!130KB到170KB之间



    我的无限制本地版1.0只是突破了Javascript的容量限制,经过测试,发现:服务器端依然有一次要赋码的语料容量的限制,大约是130KB到170KB(字节)之间,之所以是不确定的,是因为服务器是根据传入的单词量来限制,而不是根据字节数量来限制的。

    当然,面对这个限制,当前的1.0版只是“成功了一半”。若要彻底解除语料限制就必须做成EXE形式且自动把原始语料文件进行自动的较小批量的多次发送与多次接收,直到全部接收完毕就实现了圆满完成任务的效果。

    当然,用主流脚本语言编程(python,perl,ruby,vbs,nodeJS借助“文件读写”与“HTTP request发送与接收”这两项技术也能实现“
    自动把原始语料文件进行自动的较小批量的多次发送与多次接收,直到全部接收完毕”。
     
  8. dzhigner

    dzhigner Moderator

    回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    顺便问个问题,JavaScript做文本处理代码(程序)运行速度怎么样?
    不太熟悉JavaScript,就文本处理而言,貌似JavaScript虽然简单,但功能不弱,好像这一点和VB/VBA相似。VBA也能做不少文本处理方面的事情,就是速度慢,不知道JavaScript性能如何?
     
  9. iCasino

    iCasino 普通会员

    回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    要性能要有索引,还有压缩,Managing Gigabytes这本书专门论述了性能问题。理论上,这是与语言独立的。还有分布式处理也是解决数据大产生的问题的。
     
  10. dzhigner

    dzhigner Moderator

    回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    的确如此,其实我关心的是另一方面的问题:各种编程语言在文本处理RAD(快速程序开发)方面性能易学之比。
     
  11. iCasino

    iCasino 普通会员

    回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    如果是这样的话,我们是否可以仿照计算机领域的分词和翻译评测等做法,设立共同的测试数据集和共同的测试任务? 还有一个问题是,如何才能保证测试结果不受个人程序编写经验的影响?
     
  12. 李亮1975重庆

    李亮1975重庆 语料库快乐军政委

    基于V8引擎的Javascript就紧逼或赶超C++了

    Javascript在Firefox中运行或者在IE中运行,其实是不同的javascript引擎的,而谷歌也推出了自己的“V8”的javascript引擎,声称其速度性能逼近甚至某些方面赶超C++。NodeJS或Node.js就是V8引擎的javascript的最著名代表,只有一个EXE单文件,但扩展性特别强,可以加载其他的众多的模块,用它做网站或各种应用也都不错。

    另外一款比NodeJS更轻巧更弱小一些的东西,是phantomJS,它的简介我写了个在这里
    http://ishare.iask.sina.com.cn/f/35209232.html

    NodeJS和phantomJS都属于迅速火爆的CommonJS运动潮的一部分,国外的CommonJS的官方网站列出了30款左右的implementation:
    http://wiki.commonjs.org/wiki/CommonJS

    下面是最经典最入门的NodeJS的一段完整代码,它实现了一个HTTP服务器(支持高并发,内存占用极低,可扩展连接到各种数据库管理系统)……
    var http = require("http");
    http.createServer(function (req, res) {
    res.writeHead(200, {"Content-Type": "text/html"});
    res.end("Hello World\n");
    }).listen(1337, "127.0.0.1");
    console.log("Server running at http://127.0.0.1:1337/");

    http://nodejs.org/ 是其官方网站。

    Javascript引擎其实是网页浏览器引擎的核心构成,Firefox浏览器的引擎核心是SpiderMonkey,这个引擎也分离出了javascript引擎来供研究者开发者使用,在这里下载和学习 https://developer.mozilla.org/en-US/docs/SpiderMonkey/Introduction_to_the_JavaScript_shell
     
  13. 李亮1975重庆

    李亮1975重庆 语料库快乐军政委

    【在编程与不编程之间有较多的工具与技巧】

    在编程与不编程之间有较多的工具与技巧:Windows宏与Office宏工具,Office文本处理技巧,其他各种文本工具

    Excel内置的文本函数、统计数学函数、数据库函数与逻辑函数都比正常编程容易很多,但却可以解决很多的文本处理任务,因为很多时候我们只需要解决自动化操作或批量操作,而不是具有漂亮界面的一个自行开发的软件或需要解释器才能执行的脚本。

    Windows自带的findstr.exe、sort.exe、copy.exe与xcopy.exe也能完成“一定难度范围的语料检索、单词排序、语料合并、语料迁移”的任务,毕竟它们不需要像正常编程那样去“控制变量与控制流程”。而grep和sed也属于findstr.exe这类工具,叫做“基于dos的文本工具”,体现为简单的命令行,难度还低于Excel的函数操作。针对XML标注的语料库,我们提取与统计,用免费而强大的工具的话,就是XMLStarlet了,我介绍过的 http://www.corpus4u.org/forum/showthread.php?t=8611

    UltraEdit, EmEditor, PowerGrep,TextPipe这些工具属于“Windows版商业型文本处理工具”。它们内置的正则表达式,可以实现更聪明的替换和查找和删除;它们内置的宏功能能自动执行繁琐重复持续的文本处理任务(例如提取出所有的年份数字)。

    互联网上也有一些在线版的语料处理网址,我的收藏夹有这些:
    http://someya-net.com/00-class09/sentenceDiv.html
    http://www.cst.dk/online/lemmatiser/uk/index.html
    http://www.nactem.ac.uk/tsujii/enju/demo.html
    http://poets.notredame.ac.jp/cgi-bin/evatext
    http://ucrel.lancs.ac.uk/claws/trial.html
    http://morphadorner.northwestern.edu/morphadorner/
    http://someya-net.com/wlc/
    http://web4u.setsunan.ac.jp/Website/TreeOnline.htm
    http://www.someya-net.com/00-class09/wordCount.html
    http://www.link.cs.cmu.edu/link/submit-sentence-4.html
    http://nactem7.mib.man.ac.uk/geniatagger/
     
  14. 李亮1975重庆

    李亮1975重庆 语料库快乐军政委

    我眼中的选择编程语言所牵涉的10大权衡

    我眼中的初学者学习第一门编程语言,或中高级水平的人学习第N门编程语言,主要考虑以下10个条件的优劣(前5个是更重要些,后5个次要一些):

    (1)入门难度。BASIC比C容易,VBA是BASIC中最容易的,汇编语言比C语言还要难
    (2)复习难度。复习难度是基于编程语言的语言难度和附带技术知识的复杂程度的。学PHP,就必然要学足够的HTTP服务器知识;学VBA就未必学习文件读写之类的知识,所以VBA比主流编程语言都要容易些。
    (3)执行效率所有的编程语言在Windows上,都是调用Windows API而实现所有功能的,Windows API就是众多的躺在system32文件夹的DLL文件而已,这些DLL文件相互调用且有上下级关系,你用Dependency Walker就能观测到dll文件之间的嵌套型依赖关系的,其官方网址 http://dependencywalker.com/ 浅层API都依赖深层API,VB之所以其执行效率慢就是因为它所以依赖的DLL是浅层API哟!浅层API到达最深处就是Native API,普通的深层API是VC的DLL,更深的API是纯C的DLL,Native API是最深处,它们都在ntoskrnl.exe中。如果你想要更多了解”连微软公司都秘而不宣的native api“就阅读 http://giga.cps.unizar.es/~spd/pub/windows/ntdll.htm (这份英语文献太权威太震撼了,尤其是当你对数千个常规的公开的API都熟谙之后)
    (4)开发效率,是多种因素决定的。丰富的库函数、库函数的调用要简洁且可省略参数且参数的数据类型限制不严、丰富的控件及其简单灵活的控制方式、丰富的周边或扩展技术,—— 这些都是形成”高开发效率“的重要力量。但,评价开发效率最好是区分出”小规模开发“、”中等规模开发“与”大规模开发“这三种情形。

    (5)名气高低,”名气高“往往是市场占有率造成的,但有些情况下是跟风或赶时髦导致的。微软公司的产品线广,编程工具有难有易,因此也名气
    (6)教程数量,学习者与开发者的社区越活跃越悠久,教程就越多
    (7)配套知识,学Javascript的话就必然配套HTML DOM;学VBS的话,就必然配套COM(组件对象模型)的知识。
    (8)顺带启迪,学Python或Perl的人,顺带就受到了Linux操作系统的诸多启迪。
    (9)运维便捷,有些编程语言所对应的开发工具软件必须依赖额外的DLL文件,有些开发工具的新软件是绿色的(只依赖每台电脑都必然拥有的VC6的DLL),而C#开发的东西都必然依赖对应版本的.Net框架(在偏旧的操作系统上必须专门安装,有点麻烦)。VBS与HTA的开发,无需专门的编辑器与编译器,连解释器都是Windows内置的,所以只需”记事本“即可
    (10)周边产品,像Java、Python、Ruby、PHP、Perl的衍生产品和工具和技术就很多很丰富,为开发带来了便利与高效。
     
  15. 回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    这个提议很不错啊,我觉得外语界语料库的大牛应该担当起这个责任来啊
     
  16. 回复: 【新工具】Treetagger在线版之无限制本地增强版 1.0

    感谢许老师!真的是好东西啊!
     
  17. dacitou2

    dacitou2 stupid bob

    感谢分享!