我是一名Python开发人员,目前正在开发一个与NLP和NLTK相关的项目。在这个项目中,需要大量的数据用于事故分析。所以我为此提出了两个问题
我在哪里寻找如此大量的数据。我的第一个偏好是维基百科,但我不知道如何从中获取数据?我是否需要废弃维基百科?
我应该如何整理所有这些数据,以便获得更好的搜索结果? K-means聚类会有用吗?
答案 0 :(得分:1)
"事件分析目的" - 是什么让你认为维基百科对此有所帮助? 太多无关数据更糟比没有"大"数据即可。流行的错误:假设您可以通过将随机数据投入其中来解决所有问题。
可以下载维基百科数据 - 只需查看他们的网站即可。您仍然需要了解Wiki标记,但至少您不必与爬虫进行斗争,因为您可以获得数据库转储。
文本的聚类分析特别困难。文本非常多样化,很少有聚类算法可以很好地处理噪声和稀疏数据。但是为了什么? "更好的搜索结果" - 这不是集群的用途。
一些一般性建议:
答案 1 :(得分:0)
我不知道你第二个问题的答案。但是对于您的第一个问题,您可以获得维基百科数据的快照。您可以查看此link,其中Wikipedia本身根据您要构建的应用程序类型描述了使用其数据的不同方法。请注意,维基百科不建议对网站进行运行时抓取。
特别是,我觉得你可以为你的用例下载他们数据的XML转储。
答案 2 :(得分:0)
回答你的第一个问题:
除了使用像 BeautifulSoup 或 Scrapy 这样的软件包进行抓取之外,还有一些类似wikipeidia in python的api可以用来从维基百科中获取数据
答案 3 :(得分:-1)
您的问题有点过于宽泛,无法在此讨论,但我可以根据您的要求(根据我自己的经验)给您一些想法:
首先,您可能需要设计(或使用)网络抓取机器人或其他东西,以从您想要的网站中提取文本。出于事故分析的目的,也许维基百科并不是那么好。也许新闻网络可以更好地处理您的案例,因为他们可以更好地对事件进行分类,包括事件。我不太了解Pythonic网页抓取工具,但我曾使用BeautifulSoup从博客中提取出足以满足我教育目的的文本。
其次,群集本身是一个很大的讨论问题,你不能在这里简单地问它,但是有用Python进行聚类的算法(或者你必须自己实现一个!) )K-Means,基于神经元的算法,EM算法等等。我曾经使用过SOM ANN(a.k.a Kohonen的神经网络)实现。你应该考虑哪一个适合你的需要。