从社区检测到的twitter网络的tweets样本中处理和创建主题模型的一组函数。它还分析是否存在潜在的持久性社区中心(或者/或者由顶级提到的或顶级rter)。

nttc的Python项目详细描述


nttc(命名twitter社区!)python 3的tweets主题建模处理器

作者:chris lindgrenchris.a.lindgren@gmail.com 根据BSD 3条款许可证分发。详见license.txt或http://opensource.org/licenses/bsd-3-clause" rel="nofollow">http://opensource.org/licenses/bsd-3-clause

概述

从社区检测到的Twitter网络的推文样本中处理和创建主题模型的一组函数。

它假设您寻求以下问题的答案:

  1. 在语料库中,哪些社区在不同时期持续存在或短暂存在,以及何时存在?
  2. 基于他们的顶级rts和用户、顶级提到的用户以及生成的主题模型,这些社区可以被命名为什么?
  3. 在这些社区中,随着时间的推移,他们的主题是什么?
    • 待办事项:建立每个社区组跨时段的推文语料库,然后为每组建立lda模型。

因此,它假设您希望跨时段调查社区,并在已定义的周期性事件中调查每个检测到的社区的tweets,目标是命名每个社区并在语料库中随时间检查其各自的主题。

它只与Python3.x一起工作,并且不向后兼容(尽管人们可能只需很少的努力就可以分支出2.x端口)。

警告NTTC不执行自定义错误处理,因此请确保输入格式正确!如果您有任何问题,请通过电子邮件通知我。

系统要求

  • 重要信息tsm-github上的当前版本,而不是python包索引,因此您需要从github手动下载和安装(截至19年8月23日)。
    1. 从上面的链接将回购协议下载到您的计算机。
    2. 打开终端并将目录更改为tsm mastercd path/to/tsm master
    3. 一旦终端位于tsm master文件夹的根目录中,请确保首先确认计算机上尚未安装tsm:sudo pip3 uninstall tsm
      • 注意:如果没有安装,它会告诉你。如果安装了它,它将卸载它。此外,如果您对此文件夹具有权限,则无需使用sudo
    4. 仍在此根文件夹中,tsm master,安装此版本:sudo pip3 install。
    5. pip将告诉您软件包是否已成功安装。如果没有,请研究错误。
  • nltk
  • 熊猫
  • 努比
  • 表情符号
  • 打印
  • 根西姆
  • 间距

安装

PIP安装NTTC

对象

NTTC初始化并使用以下对象:

  • communitiesobject:具有生成主题模型并帮助您更容易命名它们的属性的对象。对象属性如下:

    • .tweet\u slice:示例社区tweet的dict
    • .split_docs:采样tweets的拆分版本
    • .id2word:拆分文档的dict版本
    • 。文本:示例的列表版本
    • .corpus:具有频率计数的示例项列表
    • 。自述:如果需要,打印出可读版本
    • .model:存储lda topic model对象
    • 。困惑度:主题模型的计算困惑度得分
    • .coherence:主题模型的计算一致性得分
    • .top_rts:社区前10个rter和rts的示例
    • .top\u提到:前10人的示例e提及
    • .full_hub:top_rts和top_的组合版本称为数据帧
  • communityGroupsObject:具有属性的对象,该属性分析社区相似性分数,然后跨时段对相似社区进行分组。对象属性如下:

    • .best_matches_references:每个周期的字典,每个周期的中心顶部_references(用户)值作为列表
    • .best_matches_rters:每个周期的字典,每个周期的中心顶部(用户)值作为列表
    • 。sorted\u filtered\u comms:元组列表,其中每个元组有1)两个时段之间的测试社区对,以及2)它们的JACC分数。示例:('1_0x4_0',0.4286)
    • .groups\u提及:一个集合列表,其中每个集合都是跨时段的相同提及组,基于给定的jacc阈值:α
      [{'1_8', '2_18'},
      {'3_7', '4_2'},
      {'7_11', '8_0'},
      {'10_11', '4_14', '5_14', '6_7', '9_11'},
      {'1_0', '2_11', '3_5', '4_0', '5_5', '6_12'},
      {'10_10', '1_9', '2_3', '3_3', '4_6', '5_2', '6_3', '7_0', '8_2', '9_4'},
      {'10_6', '1_2', '2_4', '3_4', '4_13', '5_6', '6_5', '7_4', '8_7', '9_0'},
      {'10_0', '1_12', '2_6', '3_0', '4_5', '5_7', '6_6', '7_3', '8_9', '9_5'}]
    • .groups rters:基于给定的jacc阈值:αα
      [{'1_8', '2_18', '5_14'},
      {'10_20', '5_18'},
      {'5_2', '6_3', '7_0'},
      {'5_1', '7_1'},
      {'10_12', '2_3', '3_13', '6_8', '7_5', '8_4', '9_1'}]
      的集合列表,其中每个集合在各个时段都是相同的rter组

功能

NTTC包含以下功能:

  • 获取csv:将csv数据加载为pandas数据帧。
  • 写入csv:将数据帧写入csv文件。
  • 创建集线器csv文件:以"集线器"的csv形式写入所有对象的顶部/提到的信息
  • 获取通信量:将数据帧列的社区值筛选到列表中。
  • 获取所有通信:将整个集合分割为community和它们各自的tweets。参数:完整数据框、社区和tweets的列名字符串。
  • 通信dict writer:将每个社区的tweets写入字典。
  • 拆分社区tweet s:隔离社区的tweets,然后将字符串拆分为每个tweet的字符串列表,以便为主题建模做好准备。返回作为重视社区tweets的数据帧。
  • clean_split_docs:删除标点符号、小写、删除停止字并转换为用于主题建模的数据帧。
  • TM U Maker:为TM创建数据并生成LDA TM。
  • get_hubs_top_rts:将hubs的前10条rt'd tweets和用户名附加到相应的period和community对象。
      ARG:
      • 集线器顶部提到的数据框,
      • 带有.top rts的对象的dict,
      • 句号字符串
    • 返回:带有new.top rts per object的dict对象
  • 获取集线器引用:将集线器引用的数据追加到相应的时段和社区对象。
      ARG:
      • 集线器数据框中提到,
      • 对象指令,
      • 句点的列名字符串,
      • 句号字符串,
      • 社区编号的列名字符串
    • 返回:dict object with new.top_references per object
  • 合并rts提到的内容:合并集线器的源并将数据作为每个社区的完整列表提到。
  • 匹配dict_处理器:处理用于tsm.match_communities()函数的网络社区集线器的输入数据帧。
    • args:一个包含period、period_community(1_0)和top-refered(最高级别)用户的数据帧
    • 返回:每个周期的字典,每个周期的通信中心值如下:α
      {'1': {'1_0': ['nancypelosi',
      'chuckschumer',
      'senfeinstein',
      'kamalaharris',
      'barackobama',
      'senwarren',
      'hillaryclinton',
      'senkamalaharris',
      'repadamschiff',
      'corybooker'],
      ...
      },
      ...
      '10': {'10_3': [...] }
      }
  • match_maker:从matching_dict_processor()获取period dict并提交给tsm.match_communities()方法。分配、筛选和排序返回值
    • args:以每周期通信集线器值为列表的每周期字典;过滤0到1之间的JACC阈值(浮点)。
    • 返回:元组列表:period_community xperiod_community,jacc score
      [('1_0x4_0', 0.4286),
      ('1_0x2_11', 0.4615),
      ('1_0x3_5', 0.4615),
      ... ]
  • 从计数器绘制条形图:将社区比较绘制为条形图。
      ARG:
      • ax=none重置字符T
      • counter=从match_maker()返回的元组列表,
      • path=所需目录路径的字符串,
      • output=所需文件名的字符串值(.png)
    • 返回:无。
  • community_grouper():用于在语料库中跨时段将相似的社区分组的进程的控制器函数。它使用1)group_reader()和2)final_grouper()函数来完成这个分类过程。
    • args:接受网络对象(net_obj),该对象的返回值来自nttc.match_maker(),该值应保存为.sorted_filtered_comms属性:具有已排序和筛选的社区对及其分数的元组列表,但它仅使用社区值。
    • 返回:集合的列表,其中每个集合是一个分组的递归社区:例如,1_0,其中1是句点,0是指定的社区号。α
      [{'1_8', '2_18'},
      {'3_7', '4_2'},
      {'7_11', '8_0'},
      {'10_11', '4_14', '5_14', '6_7', '9_11'},
      {'1_0', '2_11', '3_5', '4_0', '5_5', '6_12'},
      {'10_10', '1_9', '2_3', '3_3', '4_6', '5_2', '6_3', '7_0', '8_2', '9_4'},
      {'10_6', '1_2', '2_4', '3_4', '4_13', '5_6', '6_5', '7_4', '8_7', '9_0'},
      {'10_0', '1_12', '2_6', '3_0', '4_5', '5_7', '6_6', '7_3', '8_9', '9_5'}]
    -注意:这个算法并不完美。它需要一些改进,因为它可能会输出一些重叠。然而,它确实过滤掉了潜在的持久性社区,在不同的时间段内使用top_inspection或top_rters,因此它为您节省了一些手动比较分析工作。
  • group_reader():获取period_community对,如果发生交叉,则追加到dict。但是,由于排序和筛选的社区的顺序和内容未知,返回的dict需要更深入的分析和处理,这就是为什么在这里完成后,社区会将它们发送到最终的_grouper。
    • args:接受初始组dict,它由通过regex表达式提取的一对period_community值交叉引用。
    • 返回:过饱和比较的dict,发送到final_grouper()进行最终分析、还原和完成。
  • final_grouper():获取period_社区词典并测试它们的交集。然后,它接受任何交叉点并将它们与.union连接,并将它们附加到本地化的运行列表中,所有这些都将累积到该社区的运行主列表中。从这里开始,每个社区结果将按其长度降序排序。
    • args:从group_reader()接受组dict。
    • 返回:找到的所有唯一句点社区元素(2个或更多)的dict相似。

为每个社区构建主题模型,并将所有变量保存到相应的对象属性中。

importnttcdata_path='//Users/name/project/periods/top_rts/encoded'__file__='p1_comm_top500mentions_in_top10000_rts_count_uid.csv'dtype_dict={'community':str,'tweets':str,'retweets_count':float,'link':str,'username':str,'user_id':float}# 1. Load CSVdf_tweets=nttc.get_csv(data_path,__file__,dtype_dict)# 2. Get community numbers into a Listcomm_list=nttc.get_comm_nums(df_tweets)# 3. Write dictionary of tweets organized by per Community perspectivedict_all_comms=nttc.comm_dict_writer(comm_list,df_tweets,'community','tweets')# 4 . Process tweets for each communitysplit_dict_all_comms=nttc.split_community_tweets(dict_all_comms,'tweets')# 5. Build the topic modeltms_full_dict=nttc.tm_maker(random_seed=2018,split_comms=split_dict_all_comms,num_topics=5,random_state=100,update_every=1,chunksize=100,passes=10,alpha='auto',per_word_topics=True)#pass any of the following gensim LDATopicModel() object arguments here

以上代码的示例输出

3  Perplexity:  -7.618915328673395

 3  Coherence Score:  0.3740323991406477

 5  Perplexity:  -7.749282621692275

 5  Coherence Score:  0.36001967258313305

 6  Perplexity:  -7.475628335657981

 6  Coherence Score:  0.32547481443269244

 7  Perplexity:  -7.264458923588148

 7  Coherence Score:  0.31947706630738704

 8  Perplexity:  -7.839326042415438

 8  Coherence Score:  0.31957579040223866

 9  Perplexity:  -7.670416717009498

 9  Coherence Score:  0.28534510836872357

 10  Perplexity:  -7.370800819131035

 10  Coherence Score:  0.34724361008183413

 12  Perplexity:  -6.9411620263614795

 12  Coherence Score:  0.397521213421681

 17  Perplexity:  -6.068761633181642

 17  Coherence Score:  0.44224500342072987

 27  Perplexity:  -6.345910693707283

 27  Coherence Score:  0.41525260201784386

 Modeling complete.

将最受关注的用户添加到每个社区的中。最受关注的是属性

使用每个对象的一些输出,您可以可视化主题模型

您还可以将整个集线器输出为csv以进行更深入的分析

nttc.create_hub_csv_files(full_obj=full_obj,sys_path=data_path,output_file='p1_full_hubs.csv',drop_dup_cols=True)

绘制社区相似性指数(Jaccard的共同效率)

分析并返回跨时段的相似社区列表

  1. 初始化一个新的matchingcommunitiesobject并用matching\u dict\u processor()编写一个用户指令发送到match\u maker()
  2. 在本例中,分析sorted_filtered_提到的值的交集和并集,并输出一个集合列表,其中每个集合包含跨语料库中各个时段的相似社区。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java文件路径中的java UTF8字符   java如何可靠地写入OPC UA服务器?   for-my-if语句中的java循环不能产生我想要的结果   java我如何在1个XSL中加入2个XML   macos无法在“/Library/Java/JavaVirtualMachines/jdk15.0.1.jdk/Contents/Home/bin/apt”中找到可执行文件   Java代码简单数学   java如何避免selenium中的sendKeys方法清除之前填充的文本?   java如何将PlacesAPI自动完成小部件传递到自定义对话框?   带有文本块的java Intellij json片段问题   启动时Spring启动错误:java。木卫一。IOException:jsse。别名\u否\u键\u项   移动文件时发生java异常   http Java Web客户端远程连接