【问题标题】:Tokenizing words by preserving certain words with arithmetic and logical operators in python 3?通过在 python 3 中使用算术和逻辑运算符保留某些单词来标记单词?
【发布时间】:2020-02-16 07:49:21
【问题描述】:

在对大型语料库中的多个句子进行标记时,我需要将某些单词保留为原始形式,例如 .Net, C#, C++。我还想删除标点符号(.,!_-()=*&^%$@~ 等),但需要保留 .net, .htaccess, .htpassword, c++ 等字词。

我尝试了nltk.word_tokenizenltk.regexp_tokenize,但没有得到预期的输出。

请帮我解决上述问题。

代码:

import nltk
from nltk import regexp_tokenize
from nltk.corpus import stopwords


def pre_data():
    tokenized_sentences = nltk.sent_tokenize(tokenized_raw_data)
    sw0 = (stopwords.words('english'))
    sw1 = ["i.e", "dxint", "hrangle", "idoteq", "devs", "zero"]
    sw = sw0 + sw1
    tokens = [[word for word in regexp_tokenize(word, pattern=r"\s|\d|[^.+#\w a-z]", gaps=True)] for word in tokenized_sentences]
    print(tokens)
pre_data()

tokenized_raw_data 是一个普通的文本文件。它包含多个句子,中间有空格,由 .blog、.net、c++、c#、asp.net、.htaccess 等词组成。

例子

['.blog 是一个供博客使用的通用顶级域'.,

'C# 是一种通用的、多范式的编程语言'。,

'C++ 是面向对象的编程语言'。]

【问题讨论】:

    标签: python python-3.x list nltk tokenize


    【解决方案1】:

    此解决方案涵盖给定的示例并保留 C++C# asp.net 等单词,同时删除正常的标点符号。

    import nltk
    
    paragraph = (
            '.blog is a generic top-level domain intended for use by blogs. '
            'C# is a general-purpose, multi-paradigm programming language. '
            'C++ is object-oriented programming language. '
            'asp.net is something very strange. '
            'The most fascinating language is c#. '
            '.htaccess makes my day!'
    )
    
    def pre_data(raw_data):
        tokenized_sentences = nltk.sent_tokenize(raw_data)
        tokens = [nltk.regexp_tokenize(sentence, pattern='\w*\.?\w+[#+]*') for sentence in tokenized_sentences]
        return tokens
    
    tokenized_data = pre_data(paragraph)
    print(tokenized_data)
    

    出来

    [['.blog', 'is', 'a', 'generic', 'top', 'level', 'domain', 'intended', 'for', 'use', 'by', 'blogs'], 
     ['C#', 'is', 'a', 'general', 'purpose', 'multi', 'paradigm', 'programming', 'language'], 
     ['C++', 'is', 'object', 'oriented', 'programming', 'language'], 
     ['asp.net', 'is', 'something', 'very', 'strange'], 
     ['The', 'most', 'fascinating', 'language', 'is', 'c#'], 
     ['.htaccess', 'makes', 'my', 'day']]
    

    但是,这个简单的正则表达式可能不适用于您文本中的所有技术术语。提供完整示例以获得更通用的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多