• 英文分词对比nltk vs spacy


    word tokenize

    1. NLTK

      1. nltk.word_tokenize

      substring,按标点字符和空格划分,但保留小数、分数一类

      1. nltk.tokenize.RegexpTokenizer

      正则可保留固定的一部分,如对一些金钱'$10'表示或者其他非空白序列

      1. nltk.tokenize.stanford.StanfordTokenizer

      会将单位切分更细,例如:kg/m² -> 'kg', '/', 'm', '²'

      1. nltk.tokenize.mwe.MWETokenizer

      对已分词的文本进行再处理或者合并多个字符为一个

      1. nltk.tokenizr.WordPunctTokenizer.tokenize()`

      按字符和非字符进行划分,相当于使用正则 w+|[^ws]+,与word_tokenize的区别在于,会将小数、分数分开

      1. nltk.tokeizer.WhitespaceTokenizer().tokenize()

      按(space, tab, newline)划分

    2. Spacy

      预定义的分词是按照空格来划分,spaCy首先对文本分词,原始文本在空格处分割,类似于text.split(' '),然后分词器(Tokenizer)从左向右依次处理token,在处理token时,spaCy做了两个check:

      • 是否匹配特殊规则(execption rule)
      • 是否前缀、中缀或后缀可以分割

      spacy进行自定义规则处理,比如网址:

      import re
      from spacy.lang.en import English
      nlp = spacy.load("en_core_web_sm")
      
      def my_en_tokenizer(nlp):
          prefix_re = spacy.util.compile_prefix_regex(English.Defaults.prefixes)
          suffix_re = spacy.util.compile_suffix_regex(English.Defaults.suffixes)
          infix_re = spacy.util.compile_infix_regex(English.Defaults.infixes)
          pattern_re = re.compile(r'^https?://')
          return spacy.tokenizer.Tokenizer(nlp.vocab,
                                           English.Defaults.tokenizer_exceptions,
                                    		 prefix_re.search,
                                           suffix_re.search,
                                           infix_re.finditer,
                                           token_match=pattern_re.match)
      
      nlp.tokenizer = my_en_tokenizer(nlp)
      doc = nlp(ss)
      print([t.text for t in doc])
      
      '''
      ['abd', ',', 'defe', ',', 'https://www.selleck.eu/products/MK-2206']
      '''
      

    简单总结:

    ​ nltk的word_tokenize符合常用分词,能将带有连字符'-','/'的词进行保留,对常用单位进行保留,比如'kg/m²'等。添加自定义词典,可利用MWETokenizer进一步处理。

  • 相关阅读:
    javascript对象Math和正则对象
    javascript的Date对象
    初识Python与条件判断
    数据降维_矩阵分析笔记
    数据可视化实战:如何给陈奕迅的歌曲做词云展示?
    数据采集实战:如何自动化运营微博?
    MySQL与Python交互
    27_MySQL数字函数(重点)
    26_ mysql数据操作语言:DELETE语句
    25_MySQL 数据操作语言:UPDATE语句
  • 原文地址:https://www.cnblogs.com/harbin-ho/p/15148326.html
Copyright © 2020-2023  润新知