我正在寻找一种更有效的方法将文本数据加载到Python中,而不是使用.readlines()
,然后手动解析数据。我的目标是在文本上运行不同的模型。
我的分类器是人名,在他们的文本之前列出...让我们称之为'评论'...由***
分隔。以下是txt文件的示例:
Mike P,Review,2013年12月 Mike P,Review,June,2013
汤姆A,评论,2013年12月
Tom A,Review,June,2013
Mark D,Review,December,2013
Mark D,Review,June,2012
Sally M,评论,2011年12月
***
这是Mike P的第一次评论
***
这是Mike P的第二次评论
***
这是Tom A的第一次评论
***
等...
最终,我需要从'评论'中创建一个词袋。我可以在R中做到这一点,但是我强迫自己学习Python进行数据分析,并且每次转向我都会继续旋转。
提前致谢!
答案 0 :(得分:2)
你可能正在寻找像Counter collection这样的东西,它是一个非常有效的字典,用于计算可用对象,例如单词。请参阅How to read large file, line by line in python,了解为什么readlines不是大文件的好方法,而链接中列出的方法以及下面的方法将文件转换为更高内存效率的迭代。您没有指定文件大小,但文本分析通常会处理大文件,因此可能值得一提。
将这两者放在一起,你可以做这样的事情。
from collections import Counter
c=Counter()
with open('Reviews') as f:
for line in f:
for word in line.split(" "):
c[word]+=1
编辑:你可能想要拆分***或其他东西,但这给出了一般的想法。
答案 1 :(得分:1)
你可以用它读取整个文件,是一种非常有效的方法。
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
然后您可以根据需要解析内容。
答案 2 :(得分:0)
如果要立即读取大量数据,您可以通过readline()
手动迭代,然后在转储不必要的条目的过程中解析它。
答案 3 :(得分:0)
如果你可以发布你的方式或者想用R来做这件事,我怀疑有人可以提供一些有关如何有效地使用Python的建议。例如,你可以创建一个numpy字符串数组,并使用numpy.char模块中的函数对字符串进行矢量化操作,如果你更喜欢编写list-comprehensions或for-loops。