精华内容
下载资源
问答
  • 使用 NLTK 对文本进行清洗,索引工具EN_WHITELIST = '0123456789abcdefghijklmnopqrstuvwxyz ' # space is included in whitelist EN_BLACKLIST = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\''FILENAME = 'data/chat.txt...

    使用 NLTK 对文本进行清洗,索引工具

    EN_WHITELIST = '0123456789abcdefghijklmnopqrstuvwxyz ' # space is included in whitelist
    EN_BLACKLIST = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\''
    
    FILENAME = 'data/chat.txt'
    
    limit = {
            'maxq' : 20,
            'minq' : 0,
            'maxa' : 20,
            'mina' : 3
            }
    
    UNK = 'unk'
    VOCAB_SIZE = 6000
    
    import random
    import sys
    
    import nltk
    import itertools
    from collections import defaultdict
    
    import numpy as np
    
    import pickle
    
    
    def ddefault():
        return 1
    
    '''
     read lines from file
         return [list of lines]
    
    '''
    def read_lines(filename):
        return open(filename).read().split('\n')[:-1]
    
    
    '''
     split sentences in one line
      into multiple lines
        return [list of lines]
    
    '''
    def split_line(line):
        return line.split('.')
    
    
    '''
     remove anything that isn't in the vocabulary
        return str(pure ta/en)
    
    '''
    def filter_line(line, whitelist):
        return ''.join([ ch for ch in line if ch in whitelist ])
    
    
    '''
     read list of words, create index to word,
      word to index dictionaries
        return tuple( vocab->(word, count), idx2w, w2idx )
    
    '''
    def index_(tokenized_sentences, vocab_size):
        # get frequency distribution
        freq_dist = nltk.FreqDist(itertools.chain(*tokenized_sentences))
        # get vocabulary of 'vocab_size' most used words
        vocab = freq_dist.most_common(vocab_size)
        # index2word
        index2word = ['_'] + [UNK] + [ x[0] for x in vocab ]
        # word2index
        word2index = dict([(w,i) for i,w in enumerate(index2word)] )
        return index2word, word2index, freq_dist
    
    
    '''
     filter too long and too short sequences
        return tuple( filtered_ta, filtered_en )
    
    '''
    def filter_data(sequences):
        filtered_q, filtered_a = [], []
        raw_data_len = len(sequences)//2
    
        for i in range(0, len(sequences), 2):
            qlen, alen = len(sequences[i].split(' ')), len(sequences[i+1].split(' '))
            if qlen >= limit['minq'] and qlen <= limit['maxq']:
                if alen >= limit['mina'] and alen <= limit['maxa']:
                    filtered_q.append(sequences[i])
                    filtered_a.append(sequences[i+1])
    
        # print the fraction of the original data, filtered
        filt_data_len = len(filtered_q)
        filtered = int((raw_data_len - filt_data_len)*100/raw_data_len)
        print(str(filtered) + '% filtered from original data')
    
        return filtered_q, filtered_a
    
    
    
    
    
    '''
     create the final dataset : 
      - convert list of items to arrays of indices
      - add zero padding
          return ( [array_en([indices]), array_ta([indices]) )
    
    '''
    def zero_pad(qtokenized, atokenized, w2idx):
        # num of rows
        data_len = len(qtokenized)
    
        # numpy arrays to store indices
        idx_q = np.zeros([data_len, limit['maxq']], dtype=np.int32) 
        idx_a = np.zeros([data_len, limit['maxa']], dtype=np.int32)
    
        for i in range(data_len):
            q_indices = pad_seq(qtokenized[i], w2idx, limit['maxq'])
            a_indices = pad_seq(atokenized[i], w2idx, limit['maxa'])
    
            #print(len(idx_q[i]), len(q_indices))
            #print(len(idx_a[i]), len(a_indices))
            idx_q[i] = np.array(q_indices)
            idx_a[i] = np.array(a_indices)
    
        return idx_q, idx_a
    
    
    '''
     replace words with indices in a sequence
      replace with unknown if word not in lookup
        return [list of indices]
    
    '''
    def pad_seq(seq, lookup, maxlen):
        indices = []
        for word in seq:
            if word in lookup:
                indices.append(lookup[word])
            else:
                indices.append(lookup[UNK])
        return indices + [0]*(maxlen - len(seq))
    
    
    def process_data():
    
        print('\n>> Read lines from file')
        lines = read_lines(filename=FILENAME)
    
        # change to lower case (just for en)
        lines = [ line.lower() for line in lines ]
    
        print('\n:: Sample from read(p) lines')
        print(lines[121:125])
    
        # filter out unnecessary characters
        print('\n>> Filter lines')
        lines = [ filter_line(line, EN_WHITELIST) for line in lines ]
        print(lines[121:125])
    
        # filter out too long or too short sequences
        print('\n>> 2nd layer of filtering')
        qlines, alines = filter_data(lines)
        print('\nq : {0} ; a : {1}'.format(qlines[60], alines[60]))
        print('\nq : {0} ; a : {1}'.format(qlines[61], alines[61]))
    
    
        # convert list of [lines of text] into list of [list of words ]
        print('\n>> Segment lines into words')
        qtokenized = [ wordlist.split(' ') for wordlist in qlines ]
        atokenized = [ wordlist.split(' ') for wordlist in alines ]
        print('\n:: Sample from segmented list of words')
        print('\nq : {0} ; a : {1}'.format(qtokenized[60], atokenized[60]))
        print('\nq : {0} ; a : {1}'.format(qtokenized[61], atokenized[61]))
    
    
        # indexing -> idx2w, w2idx : en/ta
        print('\n >> Index words')
        idx2w, w2idx, freq_dist = index_( qtokenized + atokenized, vocab_size=VOCAB_SIZE)
    
        print('\n >> Zero Padding')
        idx_q, idx_a = zero_pad(qtokenized, atokenized, w2idx)
    
        print('\n >> Save numpy arrays to disk')
        # save them
        np.save('idx_q.npy', idx_q)
        np.save('idx_a.npy', idx_a)
    
        # let us now save the necessary dictionaries
        metadata = {
                'w2idx' : w2idx,
                'idx2w' : idx2w,
                'limit' : limit,
                'freq_dist' : freq_dist
                    }
    
        # write to disk : data control dictionaries
        with open('metadata.pkl', 'wb') as f:
            pickle.dump(metadata, f)
    
    def load_data(PATH=''):
        # read data control dictionaries
        with open(PATH + 'metadata.pkl', 'rb') as f:
            metadata = pickle.load(f)
        # read numpy arrays
        idx_ta = np.load(PATH + 'idx_q.npy')
        idx_en = np.load(PATH + 'idx_a.npy')
        return metadata, idx_q, idx_a
    
    
    if __name__ == '__main__':
        process_data()
    
    展开全文
  • 该小程序主要适用于大量excel导入ORACLE数据库时,批量将excel转换为TXT文本文档并同时完成数据清洗,特定分隔符转换,以及数据质量检查。适用于大数据分析者。内含使用说明文档。
  • 方便的文本工具包括: - 大写 - 将所有字符转换为大写 - 小写 - 将所有字符转换为小写 - 计数字符 - 统计文本中的所有字符 - 数字 - 统计文字中的单词 - 计数行 - 计算文本中的新行 - 旋转13 - 在ASCII表格中...
  • 这是一款Mac平台的文本格式清除工具,它不仅可以清除文本中的任意类型格式,还可以对文本进行格式处理,包括默认的清除格式制作纯文本(Plain Text),清除特殊字符,更改文字大小写(Capitalize),转换url为超链接...

    还在烦恼怎么清除文本格式吗,除了快捷键还有没有更实用的清理软件呢?TextSoap 能够帮助您自动删除不需要的字符,修复混乱的回车,以及几乎任何你能想象的东西。节省时间和精力,提高生产力,停止手动修复文本文档和电子邮件。TextSoap可以自动完成所有这些繁琐步骤。

    这是一款Mac平台的文本格式清除工具,它不仅可以清除文本中的任意类型格式,还可以对文本进行格式处理,包括默认的清除格式制作纯文本(Plain Text),清除特殊字符,更改文字大小写(Capitalize),转换url为超链接(Hyperlinks)等操作。该工具给出了多种主题性很强的格式操作Group,比如有“Standard”,“Basic”,“E-Mail”,“Markdown”,“HTML”,“Plist”等十余种,每一种Group都是给特定目标文档设计的格式操作集,当然,你也可以自定义Group来制作适合自己需求的操作集。

    TextSoap有一个全新的界面。无论您是使用文字还是建立定制清洁工,我们都会将所有“铬”专注于您的内容。

    改进文本编辑器

    TextSoap专注于处理文本,但有时您也需要一个文本编辑器。它包括很棒的新选项,例如显示行号和可以切换线条的包装。

    内置清洁剂

    TextSoap提供了超过100种内置清洁剂的大量集合。这些清洁工可以完全解决您的文本问题,或作为定制文本处理解决方案的构建块。

    实时文本匹配

    实时文本匹配非常适合尝试正则表达式。当你键入一个有效的表达式时,它会显示你文本中的所有匹配项。看到究竟如何匹配出现。

    原文及软件分享地址:https://mac.orsoon.com/Mac/158606.html

    展开全文
  • 适用于许多文本预处理和初步探索性分析任务,在小说分析,网络文本,专业文献等领域都有潜在应用价值。 使用案例: (实体分词,文本摘要,关系网络等) (实体分词,情感分析,新词发现[辅助绰号识别]等) 相关文章...
  • python文本分析之jieba分词工具

    千次阅读 2019-05-24 16:45:37
    一年前老师给了我一个文本数据分析的项目,所以稍微了解了一下中文文本分析的非常浅显的知识,在此做一下记录。因为自然语言处理这一块我只是为了完成项目而做了一些了解,所以肯定有不太对的地方,谅解一下啦~、 ...

    一年前老师给了我一个文本数据分析的项目,所以稍微了解了一下中文文本分析的非常浅显的知识,在此做一下记录。因为自然语言处理这一块我只是为了完成项目而做了一些了解,所以肯定有不太对的地方,谅解一下啦~、

     

    ---------------------一个假的目录----------------------

    自己对于文本分析的理解

    文本分析的流程

    jieba分词工具涉及到的算法原理简介(自己的浅显理解)

    jieba分词工具的用法

     

    1自己对于文本分析的理解

    文本分析就是从一段文字性数据中,阅读理解出作者的意思,比如好恶、倾向、情绪等等或是分析文本的客观类别(比如电影的类型)。使用到的领域是非常多的,比如论文打分系统、判断论文有没有抄袭的系统、舆情分析、股民情绪分析等等。

    我最近接触到的呢就是文本按照类型聚类、文本相似度分析、从论坛或者新闻中分析出股民的情绪等等课题,需要使用到的文本数据处理工具和算法最多的就是jieba分词工具、一些词典、TF-IDF、余弦相似度算法,真的是自然语言处理中最基础的部分啦。(所以我的记录真的是纯菜鸡的记录♪(^∇^*)   嘻嘻)

    2文本分析的流程

    所有文本分析课题的流程都逃不开这几步:(自我感觉哈)

    数据收集

    数据清洗

    文本向量化

    模型训练

    分析结果

    这几步中的每一步里面涵盖的很多问题都把我整的晕头转向.....数据收集涉及到爬虫、清洗涉及到分词、去重、删除或者填补空值和错值、提取关键词汇等步骤,向量化又是另一个long long long story了...里面涉及了无监督算法、有监督算法、词典之类的东西,模型训练就更别提那么多种机器学习模型和统计模型了.....等做到分析结果的时候,要是结果不如意还得重新来....终于知道自己头发怎么没有的了,真是苍天告诉我不要认输.......(灬ꈍ ꈍ灬)

    哈哈,内容是不是超级多,不过文章篇幅有限(懒),这里我只把学习到的数据清洗中的分词和关键词提取方法做个简单的介绍~

    3jieba分词工具涉及到的算法原理简介(自己的浅显理解)

    jieba中文分词工具,就是把文章中的句子分成一个个的词汇的工具(废话!),这个工具包可以分词、计算词频、标注词性、计算TF-IDF值、提取关键词,还支持繁体分词,可以加载自定义词典,所以对于中文文本分析来说是一个非常的实用的工具包。

    它支持三种分词模式:

    • 精确模式,试图将句子最精确地切开,适合文本分析;
    • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
    • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

    是不是有点不明白这三种模式?没关系,来个例子试试看:

     

    # -*- coding: utf-8 -*-
    import jieba
    
    s1 = '啊啦啦,今天外面下雨啦,我不去四川博物院了,想吃螺蛳粉和火锅。'
    
    result1 = jieba.lcut_for_search(s1,HMM=False)#搜索模式
    result2 = jieba.lcut(s1,cut_all=True,HMM=False)#全模式
    result3 = jieba.lcut(s1,cut_all=False,HMM=False)#精确模式
    
    print('搜索模式:',' '.join(result1))
    print('全模式:',' '.join(result2))
    print('精确模式:',' '.join(result3))

    结果分别是酱紫的(虽然前天才吃了火锅,是我还是想吃,还有臭辣臭辣的螺蛳粉~):

    搜索模式: 啊 啦 啦 , 今天 外面 下雨 啦 , 我 不 去 四川 博物 博物院 了 , 想 吃 螺蛳 粉 和 火锅 。
    全模式: 啊 啦 啦   今天 天外 外面 下雨 啦   我 不 去 四川 博物 博物院 了   想 吃 螺蛳 粉 和 火锅  
    精确模式: 啊 啦 啦 , 今天 外面 下雨 啦 , 我 不 去 四川 博物院 了 , 想 吃 螺蛳 粉 和 火锅 。

    在搜索模式下,长词比如 博物院被进行了划分,分成了 博物和博物院,而精确模式就没有,全模式把所有可能的词语组合比如 天外,外面都识别出来了,另外他们三个都没有识别出螺蛳粉这个长词(毫无吃货的灵性,螺蛳和螺蛳粉完全不一样好不好,这样就会导致出现后续语义分析错误的问题,比如外卖买错...)这个怎么解决就后面再说啦!

    接下来介绍一下实现算法:

    • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
    • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
    • 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

    看不懂对不对!!!

    我查了查资料+发挥imagenation,翻译一下人话版本:

    jieba工具包自己有个词典,句子来了,先把句子里面出现的字能够组成的词汇查出来(辛苦的小学生),然后根据词语们出现的次数(词频)来判断该词语在句子里面可能是它出现的概率,选择最大概率的词汇输出。如果词典里面没有这个词,就可以使用HMM(隐藏马尔科夫模型),Viterbi 算法生成新的词汇输出。

    是不是还是不太理解?

    你就想想,小时候我们学习句子,是不是有个新华字典在旁边,遇见了不懂的字和词就查一查,发现这个字原来可以这样组词啊,然后判断在这个句子里面应该是这样组词的概率(我们是凭感觉,计算机靠算法),最后确认就是这个词语。字典查不到这个词,我们也能通过思考,觉得嗯,可以这样组词。

    懂了吗?我们通过思考和感觉来给理解句子,学习生词,而计算机靠算法。那么HMM和Viterbi 算法又是什么东东嘞?查了一下别的大神的资料,大概理解是这样滴:

    HMM是隐藏马尔科夫模型,一种统计算法,它用来描述一个含有隐含未知参数的马尔可夫过程。马尔科夫过程就是一个随机过程:在已知它所处的状态的条件下,它未来的演变不依赖于它以往的演变。这种已知“现在”的条件下,“将来”与“过去”独立的特性称为马尔可夫性,具有这种性质的随机过程叫做马尔可夫过程。比如摸麻将、掷骰子等。

    隐藏马尔科夫模型主要有几个属性:

    隐藏状态

    可见状态链

    转移概率

    我自己的理解就是: 隐藏状态,比如骰子投掷结果,123456这种我们是知道的,但是每次投的结果是不知道的叫做隐藏状态,可见状态链就是投掷n次后的观测结果,比如投第一次是6,第二次是5.....转移概率就是从隐藏状态转化为可见状态的概率,对于均匀的六面体骰子来说每个结果出现的概率就是1/6,所以转换概率就是1/6。(不知道这样理解是不是正确的,大佬千万不要骂我,作为一个内心脆弱的渣渣真的会哭出来的。)

    所以对于分词来说,词汇是知道的,存在字典中,但是它将如何出现我是不知道的,所以是隐藏状态,可见状态链就是句子被分词的可能结果,句子中词汇出现的词频,它被观测到出现的次数越多,那么在这个待分词的句子里头出现的概率就越大,这个概率就是转移概率。jieba就利用了Viterbi 算法求解HMM上的最短路径(最大概率)的算法(也就是某个句子应该是这样被分割的概率),本质就是求解最可能的隐状态序列,即就是求解最可能的分词结果。

    比如:分解 想吃螺蛳粉和火锅 这句话。

    隐藏状态以及转移概率:想(0.01)、吃(0.02)、想吃(0.4)、螺蛳粉(0)、螺蛳(0.2)、粉(0.1)、和(0.1)、火锅(0.5)、火(0.01)、锅(0.05)

    可见状态链:

    想、吃、螺蛳、粉、和、火锅

    想吃、螺蛳粉、和、火、锅

    想、吃、螺蛳、粉、和、火锅

    想吃、螺蛳、粉、和、火、锅.....等等n种

    计算出所有可见状态链出现的概率就是把对应词汇的转移概率乘起来就好啦,然后从中选择概率最大的可见状态链作为最后的分词结果。

    以上只是个人理解,轻喷!!!HMM啥的真的好复杂,其实做项目只需要会意+会用就好啦,(其实还是要理解深入些才最好,可是我真的能力有限,哭唧唧)

     

    4jieba分词工具的用法

    实际操作其实是非常简单滴,跟着https://github.com/fxsjy/jieba官方走,准没错啦!

    1 分词

    前面介绍了三种分词模式,用到的是jieba中的lcut和lcut_for_search方法,返回的是list,如果使用cut和cut_for_search返回的是含有分词结果的迭代器,可以用for循环把结果输出。其中的参数HMM和cut_all是方面你选择是否使用新词开发功能以及全模式的选择。当然分词使用的都是默认词典,如果要使用其他词典就可以使用jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

    2 加载词典

    官方文档这样讲滴~

    开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率

    • 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
    • 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
    • 词频省略时使用自动计算的能保证分出该词的词频。

    比如螺蛳粉本来识别不出来,但是加入自定义词库试试看呢?

    jieba.load_userdict('dic.txt')
    result =jieba.lcut(s1,cut_all=False,HMM=False)
    print(' '.join(result))

    dic.txt中我添加了螺蛳粉这个词语,结果就ok啦:

    啊 啦 啦 , 今天 外面 下雨 啦 , 我 不 去 四川 博物院 了 , 想 吃 螺蛳粉 和 火锅 。

    另外呢还可以加入单个的词汇,去强调这个词汇的重要性,也就是官方说的调整词典:

    • 使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。

    • 使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。

    • 注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。

    简单吧~

    3 关键词提取

    jieba的关键词提取是通过计算每个词汇的TF-IDF值来衡量词汇的重要性。

    TF-IDF是指的词频-逆文本频率,TF是这个词语在一个文档中出现的频率,逆文本频率是指的该词语在所有文档中出现的概率,词频-逆文本频率就是他们相乘的值。词语在某个文档中出现的频率越高,但是在其他文档中出现的越少,就证明该词汇越能够当做某篇文档的关键词。

    TF-IDF值越大该词汇的重要性就越大。

    代码呢就是酱紫滴:

    • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
      • sentence 为待提取的文本
      • topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
      • withWeight 为是否一并返回关键词权重值,默认值为 False
      • allowPOS 仅包括指定词性的词,默认值为空,即不筛选
    • jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件

    例子:(还是螺蛳粉那个句子)

    import jieba.analyse
    s1 = '啊啦啦,今天外面下雨啦,我不去四川博物院了,想吃螺蛳粉和火锅。'
    jieba.load_userdict('dic.txt')
    result = jieba.analyse.extract_tags(s1,topK=1)
    print(result)

    结果深得我心!

    是 ['螺蛳粉'] 啊!

    要返回TF-IDF的话,改改参数:

    result = jieba.analyse.extract_tags(s1,topK=2,withWeight=True)

    结果是:[('螺蛳粉', 1.7078239289857142), ('博物院', 1.4241217170357143)]

    并且关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径

    • 用法: jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径

    关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径

    • 用法: jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径

    还有一种用法:

    基于 TextRank 算法的关键词抽取

    • jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。
    • jieba.analyse.TextRank() 新建自定义 TextRank 实例
    s1 = '啊啦啦,今天外面下雨啦,我不去四川博物院了,想吃螺蛳粉和火锅。'
    jieba.load_userdict('dic.txt')
    result = jieba.analyse.textrank(s1, topK=2, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))
    print(result)

    结果就不一样了,不知道为什么诶....我是很少用这种方法的。

    ['四川', '博物院']

    4 词性标注

    • jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer分词器。jieba.posseg.dt 为默认词性标注分词器。
    • 标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
    • 用法示例
    import jieba.posseg
    
    s1 = '想吃螺蛳粉和火锅'
    jieba.load_userdict('dic.txt')
    result = jieba.posseg.cut(s1)
    for word,tags in result:
        print(word,tags)

    想 v
    吃 v
    螺蛳粉 x
    和 c
    火锅 n

    以上就是我所理解的jieba分词工具的用法啦~

    另外分词时侯如果有停用词,我会把停用词加载在一个list中,然后判断分词结果有没有在停用词表中,如果有就pass掉,这样的方法来把停用词汇比如‘地’,‘的’这类的去掉。

    还有其他用法,暂时用不到,而且有点看不懂,比如Chinese_analyse搜索引擎不知道是个啥。希望能有大神看见解答一下下呀 感激不尽!

     

     

     

     

     

     

     

    展开全文
  • HarvestText 文本挖掘和预处理工具 Github项目地址:... 569星标 (2020.05.24) 包含文本清洗、新词发现、情感分析、关系网络、简易问答系统等功能,Demo和文档都写得比较清楚,方便学习使用。 ...

    HarvestText 文本挖掘和预处理工具

    Github项目地址:https://github.com/blmoistawinde/HarvestText

    文档地址:https://harvesttext.readthedocs.io/en/latest/

    569星标 (2020.05.24)

    包含文本清洗、新词发现、情感分析、关系网络、简易问答系统等功能,Demo和文档都写得比较清楚,方便学习使用。

    展开全文
  • 播种很少的数据种子,从文本字段中收获很多。 播撒几多种子词,收获万千领域实 在状语从句:上同步。如果在Github的上浏览/速度下载慢的话教育可以转到上操作。 用途 HarvestText是一个专注无(弱)监督方法,能够...
  • 这篇文章将包括一些简单的方法来清洗和预处理文本数据以进行文本分析任务。 我们将在Covid-19 Twitter数据集上对该方法进行建模。 这种方法有3个主要组成部分: 首先,我们要清理和过滤所有非英语的推文/文本,因为...
  • 原文:... 本文作者: @Aaron Yang 我们以英文文本处理为例。大致分为以下几个步骤: Normalization Tokenization Stop words Part-of-Speech Tagging Named Entity Recognition St...
  • 邮件地址清洗工具

    2012-12-03 22:06:28
    邮件地址清洗工具: 系统必须支持.NET 2.0 FrameWork 功能: 1、去除重复数据 2、去除无效邮件地址 3、去除错误邮件地址 4、去除指定后缀的邮件地址 5、去除指定字段值的邮件地址 6、扣除之前失败的邮件地址(通过...
  • 什么是文本挖掘 文本挖掘是一门交叉性学科,涉及数据挖掘、机器学习、模式识别、人工智能、统计学、计算机语言学、计算机网络技术、信息学等多个领域。文本挖掘就是从大量的文档中发现隐含知识和模式的一种方法和...
  • excel是一个好用的工具,没有最...什么是函数:x输入,操纵参数,获得y五大类:文本清洗,关联匹配,逻辑运算,计算统计,时间序列文本清洗:字符串:qinlu 秦路 计算机没有概念只有0和1.utf-8表示中文要24位,大...
  • 详解大数据清洗工具

    千次阅读 2019-05-25 15:29:57
    在进行数据分析和可视化之前,经常需要先“清洗”数据。这意味着什么?可能有些词条列表里是“New York City”,而其他人写成“New York, NY”。然而,你在看到某些模式前得将各种各样的输入词汇标准化。又或者,出现...
  • Python爬虫/文本处理/科学计算/机器学习——工具包总结 作者:DianaCody  曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都...
  • 读完本文你就了解什么是文本分析

    千次阅读 2020-05-26 19:21:53
    文章较长,建议先收藏有时间再阅读~插播一个广告《Python网络爬虫与文本数据分析》视频课程中对本文中的绝大部分技术都有讲解~一、文本的作用文本涉及两个主体,即文本生产者和文本消费者:...
  • 常见的文本清洗函数主要包括: find函数、left/right/mid函数、concatenate函数、replace函数、substitute函数、text函数、trim函数、len函数。 1. find()函数 find函数在数据分析中应用较多,是比较重要的一个函数...
  • 这里主要记录我在学习过程中整理的知识、调试的代码...文本规范化(Normalization),将文本中所有的字母统一转换为大写或小写,如不需要标点符号也可以过滤掉文本中的标点符号。 英文语料分词(Tokenization),将...
  • python文本预处理 import pandas as pd import numpy as np import jieba import re from sklearn.model_selection import train_test_split # import model_evaluation_utils as meu dataset = pd.read_csv(r'E:\...
  • 清洗文本-NLTK 我们无法使用原始文本来拟合机器学习或深度学习模型。 我们需要首先清理文本,这意味着将其拆分为单词并处理标点和大小写。 实际上,我们可能需要使用一整套文本准备方法,而方法的选择实际上取决于...
  • 在做data mining,很重要的一部是对数据进行清洗,由于数据量巨大,我是分段从数据库中取出数据存成文本格式,最后再将所有的文本合并成一个大的文件, 在文件合并的过程中,我用了一个小工具, Txtunit.exe,...
  • 针对同一种数据库,使用通用的接口(如ODBC/JDBC)还是原厂商自己的专用接口,数据抽取效率会有很大差别,这直接关系到能不能在有限的...支持文本数据,支持将Excel,txt文件,csv,XML文件等文件型的数据直接作为数据源;
  • 数据清洗工具kettle

    万次阅读 2015-05-26 09:47:58
    kettle简介:  kettle是pentho的一...kettle是开源工具,有源代码可以下载,ant管理编译,流程比较清楚,如果满足不了自己的需求可以去开发,也可以嵌入使用java代码以及javascript代码,来进行数据清洗。下面我来简
  • 阅读目录    1 新闻语料的准备    2 高效读取文件 ... 手工打造文本数据清洗工具    作者 白宁超    2019年4月30日09:43:59    前言:数据清理指删除、更正错误、不完整、格式有误或多余的数...
  • 一、文本数据准备 使用已经有的语料库,按照Python读取文本内容的方法读取文本文件内容。此处为了一步步演示过程,所以先使用句子,最后再整合。 二、去除指定无用的符号  我们爬取到的文本有时候会有很多空格...
  • 今天在找资料的时候无意间查找一个跟眼下工作不太相关但是一眼看到就很感兴趣的内容,讲解的是文本中数据的查找替换等的一个操作工具。之前做了比较多的相关的工作是网页html处理的工作,这里经常替换或者查找指定...
  • 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/...这些年来,接触和使用了很多Python工具包,特别是在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多优秀的Py

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,938
精华内容 6,375
关键字:

文本清洗工具是什么