一个使用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为什么ObjectOutputStream将符号写入文件而不是我的输入?   java Spring boot@ExceptionHandler未捕获子类异常   以编程方式发送mule消息(以前是:从java访问mule http端点)   java如何从应用程序外部更改JavaFX应用程序的内容   java舍入误差近似   网络Java客户端在尝试从Java服务器创建ObjectInputStream时冻结   java在创建区域和持久化区域到磁盘Geme Gemfire Spring Boot时遇到问题   计算字符串中的字符数   java我们如何在eclipseLink中使用自己的集合进行延迟加载?   java中ArrayList的初始化类型之间的差异   java ArrayIndexOutOfBoundsInsert与键盘固定器一起使用时发生异常   安卓 Java函数在函数执行前返回一个值   通过反射构造枚举的java设计模式   java ksh命令替换为数组中的引号   java有没有一种方法可以在Mockito中同时通过引用和相等进行匹配?   java什么是与Stripe Connect相当的PayPal REST API?   数学Java Haversine公式的实现问题   java使用jdbc和Kerberos委派连接到SAP HANA DB   java如何删除GeoDistanceSortBuilder的ignoreUnmapped?