Python 存储文本挖掘数据
我希望跟踪大量文档中的主题流行度。此外,我想根据主题向用户提供建议,而不是通常的纸袋模型。 为了提取主题,我使用了自然语言处理技术,这超出了本文的重点 我的问题是,我应该如何保存这些数据,以便: 一) 我可以快速获取每个主题的趋势数据(原则上,每次用户打开文档时,该文档中的主题都会受到欢迎) 二) 我可以快速比较文档以提供建议(这里我考虑使用集群技术) 更具体地说,我的问题是: 1) 我应该使用存储文本挖掘数据的常规方法吗?这意味着为每个文档存储一个主题出现向量,以便以后可以测量不同文档之间的欧几里德距离。 2) 还有别的办法吗 我正在寻找具体的python方法来实现这一点。我研究了SQL和NoSQL数据库,也研究了pytables和h5py,但我不确定如何实现这样的系统。我关心的一个问题是如何处理不断增长的话题词汇Python 存储文本挖掘数据,python,database,data-mining,text-mining,Python,Database,Data Mining,Text Mining,我希望跟踪大量文档中的主题流行度。此外,我想根据主题向用户提供建议,而不是通常的纸袋模型。 为了提取主题,我使用了自然语言处理技术,这超出了本文的重点 我的问题是,我应该如何保存这些数据,以便: 一) 我可以快速获取每个主题的趋势数据(原则上,每次用户打开文档时,该文档中的主题都会受到欢迎) 二) 我可以快速比较文档以提供建议(这里我考虑使用集群技术) 更具体地说,我的问题是: 1) 我应该使用存储文本挖掘数据的常规方法吗?这意味着为每个文档存储一个主题出现向量,以便以后可以测量不同文档之间的欧
非常感谢为什么不使用简单的SQL表呢 表:
- 具有id或文件名等主键的文档
- 在文档和术语中使用外键进行观察(在这两个字段上编制索引可能是唯一的)
如果documents表包含时间戳,则可以通过按日期聚合来轻松聚合甚至进行趋势分析。我建议您在SQL数据库中进行此项工作。您可能不想将文档存储在那里,但主题是合适的 您只需要一个表来存储以下主题:
create table Topics (
TopicId int identity(1,1), -- SQL Server for auto increment column
TopicName varchar(255),
CreatedBy varchar(255) default system_user,
CreatedAt datetime default getdate()
)
假设您有某种文档id来标识文档,则需要为分配给文档的主题创建另一个表:
create table DocumentTopics (
DocumentTopicId int identity(1,1), -- SQL Server for auto increment column
TopicId int,
DocumentID int,
CreatedBy varchar(255) default system_user,
CreatedAt datetime default getdate()
)
和另一个用于文档视图的表:
create table DocumentView (
DocumentViewId int identity(1,1), -- SQL Server for auto increment column
DocumentId int,
ViewedAt datetime,
viewedBy int, -- some sort of user id
CreatedBy varchar(255) default system_user,
CreatedAt datetime default getdate()
)
现在,您可以使用以下查询按给定日期范围的流行程度获取主题:
select t.TopicId, t.TopicName, count(*) as cnt
from DocumentUsage du join
DocumentTopics dt
on du.DocumentId = dt.DocumentId join
Topics t
on dt.TopicsId = t.TopicsId
where du.ViewedAt between <date1> and <date2>
group by t.TopicId, t.TopicName
order by 3 desc
选择t.TopicId、t.TopicName、count(*)作为cnt
从DocumentUsage du join
文档主题dt
关于du.DocumentId=dt.DocumentId连接
主题t
在dt.TopicsId=t.TopicsId上
在和之间的位置可以看到du.viewed
按t.TopicId、t.TopicName分组
按3描述订购
您还可以获取有关用户、随时间变化的信息以及其他信息。您可以有一个用户表,它可以为主题提供权重(更可靠的用户,更不可靠的用户)。系统的这一方面应该在SQL中完成。是否将主题添加到文档中一次?或者,新主题是否可以随着时间的推移添加到旧文档?@GordonLinoff它们只添加一次。您的问题的答案是,您应该将其存储在sql数据库中,其中包含主题表、DocumentUsage表和DocumentTopics表。我刚刚写出了完整的答案,但是堆栈溢出由于一些技术问题而丢失了它。我现在没有时间重新输入它。