python文本挖掘学多久,文本挖掘与NLP:从R到Python

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-28 11:37   309   0

看起来“执行此操作”需要对字符串列表进行一些regexp替换。Python在这个领域提供了比R更强大的功能。下面是我如何应用你的rmRepeatedPatterns替换,使用列表理解:pCorp = [ re.sub(r'\b(\S+?)\1\S*\b', '', line) for line in pCorp ]

如果希望将其包装在函数中:

^{pr2}$

Python还有一个map运算符,可用于函数:pCorp = map(rmRepeatedPatterns, pCorp)

但是列表理解更强大、更具表现力和灵活性;正如您所见,您可以应用简单的替换而不必将它们埋入函数中。在

附加说明:如果您的数据集很大,您还可以学习如何使用生成器而不是列表理解;实际上,它们允许您根据需要生成元素,而不是创建大量中间列表。

Python有一些操作符,比如map,但是如果你要做很多矩阵操作,你应该阅读numpy,它提供了一个更像R的体验。

编辑:在再次查看了示例R脚本之后,我将如何完成剩下的清理工作,例如,获取行列表,转换为小写,删除标点和数字(特别是:不是英文字母的所有内容),并删除非索引字。在# Lower-case, split into words, discard everything that's not a letter

tok_lines = [ re.split(r"[^a-z]+", line.lower()) for line in pCorp ]

# tok_lines is now a list of lists of words

stopwordlist = nltk.corpus.stopwords.words("english") # or any other list

stopwords = set(w.lower() for w in stopwordlist)

cleantoks = [ [ t for t in line if t not in stopwords ]

for line in tok_lines ]

我不建议使用question you link to中提出的任何一种解决方案。在集合中查找事物比在大列表中查找要快得多,我将使用理解来代替filter()。在

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP