Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于python的语料库分析_Python_Nlp_Tokenize - Fatal编程技术网

基于python的语料库分析

基于python的语料库分析,python,nlp,tokenize,Python,Nlp,Tokenize,我是自然语言处理的一名新生,我有一项关于简单语料库分析的任务。给定一个输入文件(MovieCorpus.txt),我们被分配计算以下统计数据: 句子、标记、类型(引理)的数量 句子长度、类型、位置的分布 这是为了回答这些问题,但由于文件非常大(>300000句),因此需要花费很长时间来分析。我做错什么了吗?我应该使用NLTK而不是spacy吗 import pandas as pd import nltk from nltk import word_tokenize # Movie Corpu

我是自然语言处理的一名新生,我有一项关于简单语料库分析的任务。给定一个输入文件(MovieCorpus.txt),我们被分配计算以下统计数据:

  • 句子、标记、类型(引理)的数量
  • 句子长度、类型、位置的分布
  • 这是为了回答这些问题,但由于文件非常大(>300000句),因此需要花费很长时间来分析。我做错什么了吗?我应该使用NLTK而不是spacy吗

    import pandas as pd
    import nltk
    from nltk import word_tokenize
    
    # Movie Corpus
    with open ('MovieCorpus.txt','r') as f:
        read_data = f.read().splitlines()
    
    df = pd.DataFrame({"text": read_data}) # Assuming your data has no header 
    
    data = data.head(10) 
    w_tokenizer = nltk.tokenize.WhitespaceTokenizer()
    lemmatizer = nltk.stem.WordNetLemmatizer()
    
    def lemmatize_text(text):
        return [lemmatizer.lemmatize(w) for w in w_tokenizer.tokenize(text)]
    
    data['lemma'] = data.text.apply(lemmatize_text)
    data["tokens"] = data.text.apply(nltk.word_tokenize)
    data["posR"] =  data.tokens.apply(lambda x: nltk.pos_tag(x))
    tags = [[tag for word, tag in _] for _ in data["posR"].to_list()]
    data["pos"] =  tags
    
    print(data)
    
    

    从现在起,您应该能够自己完成所有其他任务。

    我建议您将
    读取的数据制作成一个数据框,并使用
    apply()
    函数标记文本。这将加快这一进程。此外,您还可以从nltk导入
    sent_tokenize
    ,以便按句子进行标记化。
    import pandas as pd
    import nltk
    from nltk import word_tokenize
    
    # Movie Corpus
    with open ('MovieCorpus.txt','r') as f:
        read_data = f.read().splitlines()
    
    df = pd.DataFrame({"text": read_data}) # Assuming your data has no header 
    
    data = data.head(10) 
    w_tokenizer = nltk.tokenize.WhitespaceTokenizer()
    lemmatizer = nltk.stem.WordNetLemmatizer()
    
    def lemmatize_text(text):
        return [lemmatizer.lemmatize(w) for w in w_tokenizer.tokenize(text)]
    
    data['lemma'] = data.text.apply(lemmatize_text)
    data["tokens"] = data.text.apply(nltk.word_tokenize)
    data["posR"] =  data.tokens.apply(lambda x: nltk.pos_tag(x))
    tags = [[tag for word, tag in _] for _ in data["posR"].to_list()]
    data["pos"] =  tags
    
    print(data)