首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NLTK库对TF文件进行标记化和柠檬化

使用NLTK库对TF文件进行标记化和柠檬化
EN

Stack Overflow用户
提问于 2018-06-12 13:56:04
回答 1查看 3.2K关注 0票数 1

在此基础上,对意大利语文本(标记化、归一化)进行文本分析,以供TF技术今后使用,并在此基础上构建集群。对于预处理,我使用NLTK,对于一个文本文件,一切正常:

代码语言:javascript
复制
import nltk
from nltk.stem.wordnet import WordNetLemmatizer

it_stop_words = nltk.corpus.stopwords.words('italian')

lmtzr = WordNetLemmatizer()

with open('3003.txt', 'r' , encoding="latin-1") as myfile:
    data=myfile.read()

word_tokenized_list = nltk.tokenize.word_tokenize(data)

word_tokenized_no_punct = [str.lower(x) for x in word_tokenized_list if x not in string.punctuation]

word_tokenized_no_punct_no_sw = [x for x in word_tokenized_no_punct if x not in it_stop_words]

word_tokenized_no_punct_no_sw_no_apostrophe = [x.split("'") for x in word_tokenized_no_punct_no_sw]
word_tokenized_no_punct_no_sw_no_apostrophe = [y for x in word_tokenized_no_punct_no_sw_no_apostrophe for y in x]

word_tokenize_list_no_punct_lc_no_stowords_lemmatized = [lmtzr.lemmatize(x) for x in word_tokenized_no_punct_no_sw_no_apostrophe]

但问题是,我需要对文件夹中的大量.txt文件执行以下操作。为此,我试图利用PlaintextCorpusReader()的可能性

代码语言:javascript
复制
from nltk.corpus.reader.plaintext import PlaintextCorpusReader

corpusdir = 'reports/'

newcorpus = PlaintextCorpusReader(corpusdir, '.txt')

基本上,我不能仅仅将newcorpus应用到前面的函数中,因为它是一个对象,而不是一个字符串。所以我的问题是:

  1. 函数应该是什么样的(或者我应该如何为一个不同的文件更改现有的函数)来对一个文件集进行标记化和柠檬化(使用PlaintextCorpusReader())
  2. TF-以色列国防军方法( vectorizer = TfidfVectorizer()的标准学习方法)在PlaintextCorpusReader()中会是什么样子?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 14:47:57

我认为你的问题可以通过阅读来回答:这个问题,这个另一个和TfidfVectorizer文档。为了完整起见,我总结了以下的答案:

首先,您想要获取文件ids,通过第一个问题可以按如下方式获得它们:

代码语言:javascript
复制
ids = newcorpus.fileids()

然后,基于第二代,您可以检索文档的单词、句子或段落:

代码语言:javascript
复制
doc_words = []
doc_sents = []
doc_paras = []
for id_ in ids:
    # Get words
    doc_words.append(newcorpus.words(id_))
    # Get sentences
    doc_sents.append(newcorpus.sents(id_))
    # Get paragraph
    doc_paras.append(newcorpus.paras(id_))

现在,在doc_wordsdoc_sentsdoc_paras的第一个位置上,对语料库中的每个文档都有所有的单词、句子和段落(分别)。

对于tf-,您可能只想要单词。由于TfidfVectorizer.fit的方法具有可迭代性,可以生成str、unicode或文件对象,所以需要将文档(标记化的单词数组)转换为单个字符串,或者使用与这一个类似的方法。后者使用虚拟标记器直接处理单词数组。

您还可以将自己的令牌程序传递给TfidVectorizer,并使用PlaintextCorpusReader读取文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50818999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档