`
单眼皮大娘
  • 浏览: 113736 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
一、introduction       Often we are interested in finding patterns which appear over a space of time. These patterns occur in many areas; the pattern of commands someone uses in instructing a computer, sequences of words in sentences, the sequence of phonemes in spoken words - any area where a sequence ...
    上次介绍了Paoding的字典数据结构,这次介绍下paoding是如何对待分词文本依据词典分词的。paoding在查找字典时依据两个类: BinaryDictionary 和 HashBinaryDictionary。上次也已经介绍过这两个数据结构,这里不再重复。     HashBinaryDictionary其实就是把大块数据词典切分成小块的词典,并用BinaryDictionary存储。在用HashBinaryDictionary的search方法查找时,其采用的是递归方法,最终还是会进入BinaryDictionary中。看代码便知道 public Hit search(C ...
    分词工具不管如何变,其肯定会包含字典管理模块(当然,这是针对按字符串匹配分词),就算是基于语义分词也得有语义字典,基于统计需要词频字典等等。     在调研了mmseg4j,ictclas4j(imdict和ictclas4j属于一类,只不过其为了效率去掉了ictclas4j的命名实体识别部分),IKAnalyzer,paoding 等分词器后,发现他们的字典管理基本大同小异。一下以paoding为例,解释下分词工具的字典管理模块。     先说下paoding的字典数据结构。下面代码是字典接口,BinaryDictionary 和 HashBinaryDictionary 都实现该 ...
    本体是哲学中的概念,主要是描述实体,以及实体与实体之间的关系。本文包含三部分,首先介绍下本体在哲学中是啥(根据自己的理解,精确性还有待考核),接着说下本体和文本分类的关系,最后说下基于本体进行语义 ...
    最近在做分词,在网上发现了MMSEG,论文简单入理。在code.google.com上搜到了java的实现版本,非常感谢chenlb开源自己的代码。     在学习mmseg4j对字典的结构比较困惑,做了些调研,写下自己的感受。     mmseg4j采用 key-tree的形式存储字典数据结构,这有点类似中科院的ictclas4j的字典结构,ictclas4j的字典结构含有6768个字块(好像是这么多,可能有误),每一个子块是由含有以该字开头的词组成。结构图如下所示:     mmseg4j原始字典有两个,一个是chars.dct,另一个是words.dct。mmseg4j先加载 ...
注:本文只是个人阅读ictclas4j的一些总结,如有不正确的地方欢迎指出           ictalas4j用到的字典主要是下面的三个:coreDict、biGramDict、nr。coreDict记录了6768个词块,里面有对应的词频和句柄(用于词性标注);biGramDict里面记录的是词和词之间的关系,也就是相邻两个词一起出现的频率;nr记录的是中文人名角色标注,该标注来自对人民日报语料库训练的结果。      了解了其应用的字典后,看一下ictclas4j的大致流程。            首先,把整片文档分割成一个个的句子,对分割后的句子进行原子切割。      其次,查找 ...
     程序员开发难免会遇到头疼的 out of momery 异常,该异常关键是不可捕获,哪个线程抛出该异常,那么该线程除了最后访问finally代码块外,只有退出。      可是退出一般不是程序员所看到的,也就是抛出该异常之后如何处理结下来的工作,并不仅仅就是退出完事了,当然可以把代码写到finally里,但finally 一般都是清理资源。      经测试发现抛出OOM异常之后,其会被Thread类的disPatchUncaughtExceptionHandler()方法捕获,从而终结该线程。      那么如何才能正确处理Out of momery异常呢?下面的代码结构为解决OOM ...
最近在网上看到一篇好文,里面有关于线程池的框架,感觉很是不错,先把代码贴出: import java.util.LinkedList; public class WorkQueue { private final int nThreads; private final PoolWorker[] threads; private final LinkedList queue; public WorkQueue(int nThreads) { this.nThreads = nThreads; queue = new LinkedList(); ...
   JDBC在默认的情况下,执行一次查询操作,会把结果集全部倒入到内存中,小量的数据还可以承受,不会出现问题,可是要是处理大量数据,就会报 out of momery 错误,直接把内存给你压爆掉。    这就需要考虑如何程序优化的问题了,还好JDBC使我们很方便的处理这一类的问题。加入下面的代码。 preStmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); preStmt.setFetchSize(Integer.MIN_VALUE); 那么问题很轻 ...

递归算法

递归: 设计程序的时,首先要明白递归函数要返回的是什么(可以返回空值),这样为以后的整个流程的设计做好铺垫。 确定好函数的返回值类型后,就开始整个过程。把递归函数就当成一般的函数对待,给该函数(递归)参数,经函数加工后返回一个需要的对象,后续的流程接着加工返回的对象。 这个就是简单的递归程序的设计,没有返回值的递归函数更简单。递归的时候程序自动会把大的问题逐步简化为小的问题至最后不满足递归条件,逐步向上一层层返回,最后得解。 实例代码就不贴了,网上多的是,递归的原理也不多说,这里只是说的是递归程序的设计过程。
在XML中Node是Element的父类,因此Element类型的节点可以转换成Node(面向对象中的向上转换)。但是看到文章中有人说Element是Node的部分,很费解。纠正下。 下面是一段测试代码:(向下转型) import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfiguration ...

xml 小缺陷

    博客分类:
  • xml
   最近在处理web信息,打算选用工具htmlparser,但是其有内在的bug,回调到javascript的标签内,这样得到的结果会完全不着边际。于是打算采用jtidy和java本身的xml工具来处理web,先用Jtidy将html格式的文件转成xml的形式,然后处理就可以了。    可是在处理xml时得到的结果跟想象的一点都不一样,这很差解,根节点下有两个孩子节点,遍历的时候却无缘无故的多了很多#text节点,很是崩溃啊,以为程序写错了,单步跟踪,确实发现一个个的#text节点出现,上网查资料,总算发现问题,原来在每个孩子节点的周围都会出现#text的空白节点,比如有2个孩子节点,在其周围 ...
    在做IE正方面的东西,用的是GATE框架,处理中文文本,中文处理不同于英文,因为中文最大的特点就是每个字之间没有间隔,而英文每个词之间都有间隔,GATE是谢菲尔德大学开发的开源框架,老外麽,主要处理人家的英文 ...
    工欲善其事,必先利其器。     最近做eclipse插件开发,在师父的带领下了解了eclipse的一些知识,用了一段eclipse,才发现其功能的强大。     首先eclipse视一切都是插件,原来平时用的debug,java 编辑器,等等都是一个个的 ...
Global site tag (gtag.js) - Google Analytics