【问题标题】:Python: Tokenizing with phrasesPython:使用短语进行标记
【发布时间】:2011-07-28 18:57:39
【问题描述】:

我有想要标记的文本块,但我不想标记空格和标点符号,这似乎是 NLTK 等工具的标准。我希望将某些特定短语标记为单个标记,而不是常规标记化。

例如,给定句子“The West Wing 是由 Aaron Sorkin 创作的一部美国电视连续剧,最初于 1999 年 9 月 22 日至 2006 年 5 月 14 日在 NBC 播出”,并将短语添加到标记器“@ 987654322@," 生成的标记将是:

  • 西翼
  • 一个
  • 美国
  • ...

完成此任务的最佳方法是什么?我更喜欢使用 NLTK 等工具。

【问题讨论】:

    标签: python nlp tokenize nltk


    【解决方案1】:

    您可以使用 NLTK 的 Multi-Word Expression Tokenizer MWETokenizer

    from nltk.tokenize import MWETokenizer
    tokenizer = MWETokenizer()
    tokenizer.add_mwe(('the', 'west', 'wing'))
    tokenizer.tokenize('Something about the west wing'.split())
    

    你会得到:

    ['Something', 'about', 'the_west_wing']
    

    【讨论】:

      【解决方案2】:

      如果您事先不知道特定的短语,您可以使用 scikit 的 CountVectorizer() 类。它可以选择指定更大的 n-gram 范围 (ngram_range),然后忽略任何没有出现在足够多的文档中的单词 (min_df)。您可能会发现一些您没有意识到的常见短语,但您也可能会发现一些毫无意义的短语。它还可以使用 stop_words 参数过滤掉英语停用词(无意义的词,如“is”)。

      【讨论】:

        【解决方案3】:

        如果您正在寻找一组固定的短语,那么简单的解决方案是将您的输入标记化并“重新组合”多词标记。或者,在将The West Wing 转换为The_West_Wing 的标记之前进行正则表达式搜索和替换。

        如需更多高级选项,请使用regexp_tokenize 或查看chapter 7 of the NLTK book

        【讨论】:

        • regex_tokenizechapter 7 of the NLTK book 链接需要登录名和密码。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多