一个简单的Python中文NLP工具包——foolnltk

浏览: 2950

命名实体识别(NER)被越来越多地应用到实际任务中。经典的模型非biLSTM+CRF莫属。如果再套用当今最火爆的预训练模型bert,只用bert+crf就能做出比biLSTM+CRF准确率更高的模型。但是训练模型往往是需要耗费资源,并且需要大量的训练语料。现今开源的NLP工具包层出不穷,我们可以直接站在巨人的肩膀上,简化我们的工作量,去完成我们的任务。

今天我们就为大家介绍一款超实用、超简单的中文NLP工具包——foolnltk

foolnltk

foolnltk的作者在介绍它的模型时,第一句话就是:“可能不是最快的开源中文分词,但很可能是最准的开源中文分词”。该模型是基于BiLSTM模型训练而成,包含分词,词性标注,实体识别, 且都有比较高的准确率。此外,和jieba类似的,用户可以自定义词典。最重要的一点是,模型开放了一个可以自己训练的接口,让用户去训练适应特定场景的模型。

install

很简单,pip install foolnltk

分词

    import fool
    text = "这是一个分词任务"print(fool.cut(text))
      >>> ['这是', '一个', '分词', '任务']

      用户可以自定义词典。词典格式如下,词的权重越高,词的长度越长,那么就越可能将其作为一个完整的词切分。权重值要大于1。

        这不巧了嘛 2000
        呵呵哒 1000
        恩儿屁 1000
        中文名 1000

        加载词典

          import fool
          fool.load_userdict(path)
          text = ["NLP的中文名叫恩儿屁", "这不巧了嘛呵呵哒"]
          print(fool.cut(text))
            >>> [['NLP', '的', '中文名', '叫', '恩儿屁'], ['这不巧了嘛', '呵呵哒']]

            词性标注

              import fool

              text = ["一个傻子在北京"]
              print(fool.pos_cut(text))
                >>> [[('一个', 'm'), ('傻子', 'n'), ('在', 'p'), ('北京', 'ns')]]

                实体识别

                  import fool

                  text = ["一个傻子在北京","你好啊"]
                  words, ners = fool.analysis(text)
                  print(ners)
                    >>> [[(5, 8, 'location', '北京')]]

                    是不是很灵活,很实用?foolnltk也支持java,传送门。除了foolnltk,还有许多其它开源的中文NLP工具包,包括bosonnlp、snownlp等等,大家有兴趣可以多试试!

                    扫码下图关注我们不会让你失望!

                    image.png

                    推荐 0
                    本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
                    转载、引用前需联系作者,并署名作者且注明文章出处。
                    本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

                    0 个评论

                    要回复文章请先登录注册