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