0

使用 ipython 2.7 和非 Ascii 字符的语料库。

清理过程似乎很好,但是一旦我使用 Wordnet 或 Porter 对语料库进行词形还原,文件的大小就会成倍增加。请看下面的代码

 from nltk.corpus import stopwords

 tokenized_docs_no_stopwords = []
 for doc in tokenized_docs_no_punctuation:
         new_term_vector = []
         for word in doc:
         if not word in stopwords.words('english'):
         new_term_vector.append(word)
tokenized_docs_no_stopwords.append(new_term_vector)

和例行公事

 from nltk.stem.porter import PorterStemmer

 from nltk.stem.wordnet import WordNetLemmatizer

 porter = PorterStemmer()

 wordnet = WordNetLemmatizer()

  preprocessed_docs = []
 for doc in tokenized_docs_no_stopwords:
       final_doc = []
       for word in doc:
       final_doc.append(porter.stem(word))
       #final_doc.append(snowball.stem(word))
       #final_doc.append(wordnet.lemmatize(word))
   preprocessed_docs.append(final_doc)

似乎使语料库大了 10 倍。去除停用词和词法提取的目标不应该减少语料库的大小吗?

我尝试过调整缩进,但我觉得可能有一个比“追加”例程更有效的循环,但我更关心内存的指数增长。

我正在研究这里的例子

http://stanford.edu/~rjweiss/public_html/IRiSS2013/text2 任何帮助或指导将不胜感激

4

1 回答 1

1

好的 - 代码的缩进很关键,但我消除了混乱的附加循环并改用了 Lamba:

filtered_words = stopwords.words('english')
 tokenized_docs_no_stopwords = []

tokenized_docs_no_stopwords = filter(lambda x: x not in filtered_words,       
tokenized_docs_no_irishstopwords)
于 2014-08-17T15:28:38.240 回答