一个使用TopicRank算法从文档中获取有用信息的Python包。

topicrankp的Python项目详细描述


使用TopicRank算法提取重要主题/短语

概述

TopicRank是一种无监督的方法,旨在从文档中最重要的主题中提取关键短语。主题被定义为一组相似的候选关键字。 这种新方法是对用于关键短语提取的TextRank方法的改进(Mihalcea和Tarau,2004)。在TextRank方法中,文档由一个图表示,其中单词是顶点,边表示共现关系。从PageRank(Brin和Page,1998)派生的基于图的排名模型被用来为每个单词分配一个显著性分数。TopicRank将文档表示为一个完整的图,其中顶点不是单词而是主题。并将其定义为一个相似的词群。在

1。主题识别和聚类:

本项目遵循Wan和Xiao(2008)的研究,从文档中提取出最长的名词和形容词序列作为候选关键字。其他方法使用语法过滤的n-gram,这些n-gram很可能包含与参考关键字短语匹配的大量候选词,但是n-gram受限长度是一个问题。事实上,n-gram并不总能像最长的名词短语那样捕捉到足够多的信息。而且,它们不太可能语法正确。在

为了将相似名词短语自动分组为一个实体,本项目使用了Hirearchical凝聚聚类算法。对于这种聚类算法,矢量化文本被传递到“Jaccard”公司,用于查找短语之间的相似性。在

2。基于图表的排名:

TextRank(基于图形的排名模型)用于为每个主题。到了解textrank算法的工作原理请参考:https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf

入门

使用此库,您将能够从文档中提取有意义的信息,例如:

  • 前N个短语
  • Url的
  • 电子邮件Id
  • 电话号码
  • 重要名称

安装

pip3 install topicrankpy

^{pr2}$
t.extract_all('path_of_document',no_of_phrases)    

输出:为了测试,我使用了我的简历。在

{
  'Top_Phrases_With_Ranking': [
    ('data engineering',
    0.03882171811465683),
    ('machine learning',
    0.0231421447805223),
    ('technologies',
    0.01656229201773112),
    ('algorithms',
    0.015179556679089493),
    ('python',
    0.014202240623362651),
    ('android application',
    0.013784183422746128),
    ('deep learning',
    0.012663419387693997),
    ('cloud services',
    0.012062811163957745),
    ('kafka',
    0.011780856748625147),
    ('elasticsearch',
    0.011594082728116736)
  ],
  'Phone_Numbers': [
    '4168328255'
  ],
  'Email_address': [
    'patelaayush678@gmail.com'
  ],
  'Important Names': [
    'Aayush Patel',
    'AWS Certified Solutions Architect',
    'Award Machine Learning Artificial Intelligence',
    'Advance Data Science',
    'Google Play Store',
    'Chahal Academy',
    'Apache Spark Hadoop',
    'Kafka',
    'Kafka Streams',
    'Apache Cassandra',
    'Flume',
    'Amazon Kinesis',
    'Amazon EMR',
    'Elastic Map Reduce',
    'Machine Learning Deep',
    'Data Preprocessing',
    'Keras',
    'Open CV',
    'Python',
    'Amazon Web Services',
    'Google Cloud Platform',
    'System',
    'Linux Windows',
    'Gujarat',
    'Python',
    'Cloud',
    'Teksun Lab Pvt',
    'Ltd',
    'Kinesis',
    'Collect',
    'Applied',
    'Python',
    'Data',
    'Machine Learning Intern',
    'Experts Hub',
    'Keras',
    'Sardar Vallabhbhai Patel Institute Technology',
    'Android',
    'Kinesis',
    'Cognito',
    'Desktop Application',
    'Python',
    'Apache Kafka',
    'Apache Cassandra Elasticsearch',
    'Twitter API',
    'Elastic Load Transform',
    'Kafka Connector Sink',
    'Cassandra',
    'Inspector',
    'Ontario Fire Code',
    'Build Log Analytics Solutions',
    'Google Play Store',
    'Trent University'
  ],
  'URLS': [
    'https://www.linkedin.com/in/aayushpatel678/',
    'https://github.com/Aayushpatel007',
    'https://www.youtube.com/watch?v=tvBZz7L5EBI'
  ]
}

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

推荐PyPI第三方库


热门话题
java Spring数据JPA+Hibernate在不首先找到父实体的情况下保存子实体   php Java:如何从CLI接收命令   spring为java中的导出数据创建访问文件   java在Windows 8.1上安装Play Framework   java Spring启动白标签错误页面(类型=未找到,状态=404)   java如何在单击时从数组中绘制?   java fn:substringAfter()上次出现   java在IFR语句中使用方法返回   java onPause()或onStop()的名称   对关联对象的关联对象具有条件的java HQL查询   java只打印一次总值,无需迭代   java如何使用抽象Uri buildOn()方法?   如何在Java中执行sudo命令并获得错误输出?   java反射:避免对getConstructor(类<?>…)的未经检查的警告调用作为原始类型类的成员   Java:如何从类中创建的对象调用类方法?   java如何在电子邮件中嵌入图像?   java如何在Android上启用详细GC?   java什么是串行版本id?