有没有更有效的方法? 我的代码读取文本文件并提取所有名词。
import nltk
File = open(fileName) #open file
lines = File.read() #read all lines
sentences = nltk.sent_tokenize(lines) #tokenize sentences
nouns = [] #empty to array to hold all nouns
for sentence in sentences:
for word,pos in nltk.pos_tag(nltk.word_tokenize(str(sentence))):
if (pos == 'NN' or pos == 'NNP' or pos == 'NNS' or pos == 'NNPS'):
nouns.append(word)
如何降低此代码的时间复杂性?有没有办法避免使用嵌套for循环?
提前谢谢!
有用提示:通常情况下,与在“for”循环中使用.insert()或append()方法向列表中添加元素相比,列表理解是构建列表的更快方法。
如果您打开了} 。它很容易提取所有名词和名词短语:
NLTK
以外的选项,请签出^{使用
nltk
、Textblob
、SpaCy
或任何其他库都可以获得良好的结果。这些图书馆都能胜任这项工作,但效率不同。在我的Windows102内核、4个处理器、8GBRAM i5hp笔记本电脑上,在jupyter笔记本电脑上,我进行了一些比较,结果如下。
对于TextBlob:
输出为
对于nltk:
输出为
对于痉挛:
输出为
似乎
nltk
和TextBlob
速度相当快,这是意料之中的,因为没有存储关于输入文本txt
的其他内容。痉挛要慢得多。还有一件事。SpaCy
错过了名词NLP
,而nltk
和TextBlob
得到了它。我会为nltk
或TextBlob
开枪,除非我想从输入中提取其他内容txt
。快速进入
spacy
here。查看有关
TextBlob
here的一些基础知识。查看
nltk
如何here相关问题 更多 >
编程相关推荐