无监督关键字提取器

soykeyword的Python项目详细描述


Python library for Keyword Extraction

关键词/关联词提取的Fi Sun库。by Lovit (Hyunjoong) and Hunsik Shin

soykeyword中提取的关键词和关联词如下定义。一个文档集合关键词是一个可以区分其他文档集合和该文档集合的质量好的单词(区分力,discriminative power),是一个可以很好地说明该集合的单词。频率低的单词只在一个集合中登场的可能性很高,所以区分力很大,但是说明力较弱。提出的两种算法选择了同时具有较高的说明力和区分力的单词作为关键词。

关联词将包含标准单词的文档集合和不包含的文档集合的区分关键词定义为关联词。这也意味着co-ocurrence是很高的单词选择co-ocurrence高且说明力强的单词。

Setup

  • pip install soykeyword

Requires

  • Python >= 3.4 (not tested in Python 2)
  • numpy >= 1.12.1
  • scikit-learn >= 0.18
  • psutil >=5.0.1

Usage

Lasso Regerssion Keyword Extractor

学习将sparse matrix输入extractor。index2 word是关于word idx的单词list形式如果不将此输入train(),将被输出到word idx,而不是与关键词相关的单词。

from soykeyword.lasso import LassoKeywordExtractor

lassobased_extractor = LassoKeywordExtractor(min_tf=20, min_df=10)
lassobased_extractor.train(x, index2word) # x: sparse matrix
将要提取关键词的文档集documents输入extract from docs(),提取区分该文档集和其它文档集的keywords。

keywords = lassobased_extractor.extract_from_docs(
    documents, 
    min_num_of_keywords=30
)

关联词可以在extract from word中输入单词。

lassobased_extractor.extract_from_word(
    '아이오아이',
    min_num_of_keywords=30
)
以《p》一天新闻为基准,提取了“I.O.I”的关联词。

[KeywordScore(word='아이오아이', frequency=270, coefficient=17.850189941320671),
 KeywordScore(word='엠카운트다운', frequency=221, coefficient=1.200759338786378),
 KeywordScore(word='뮤직', frequency=195, coefficient=1.081777863860977),
 KeywordScore(word='일산동구', frequency=36, coefficient=0.98636875892070186),
 KeywordScore(word='키미', frequency=297, coefficient=0.70877507721215616),
 KeywordScore(word='챔피언', frequency=105, coefficient=0.51940928356916138),
 KeywordScore(word='강렬', frequency=352, coefficient=0.36972563098092176),
 KeywordScore(word='컴백', frequency=536, coefficient=0.30677481146665397),
 KeywordScore(word='화려', frequency=518, coefficient=0.26764304959838653),
 KeywordScore(word='수출', frequency=735, coefficient=0.23882691530127598),
 KeywordScore(word='걸그룹', frequency=1060, coefficient=0.20972098801573957),
 KeywordScore(word='방영', frequency=208, coefficient=0.19694219657704334),
 KeywordScore(word='프로듀스101', frequency=96, coefficient=0.17074232136595247),
 ...

详细的教程在{a3}。

Proportion based Keyword Extractor

Proportion based关键词/关联词提取是以两个集合词出演率的比例为基础,提取关键词。P(w | pos)是提取关键词的文档集中单词w的出演比例,P(w | neg)是其他文档集中单词w的出演比例。

score(w) = P(w|pos) / { P(w|pos) + P(w|neg) }

学习数据的形态支持(sparse martrix,index2 word)或文本数据两种。

文本数据形式学习时,设置min tf,min df,tokenize。以下的例子是default value。

from soykeyword.proportion import CorpusbasedKeywordExtractor
corpusbased_extractor = CorpusbasedKeywordExtractor(
    min_tf=20,
    min_df=2,
    tokenize=lambda x:x.strip().split(),
    verbose=True
)

# docs: list of str like
corpusbased_extractor.train(docs)
输入要提取关键词的文档集documents。

keywords = corpusbased_extractor.extract_from_docs(
    documents,
    min_score=0.8,
    min_frequency=100
)
输入“p”关联词word。

keywords = corpusbased_extractor.extract_from_word(
    '아이오아이',
    min_score=0.8,
    min_frequency=100
)
以《p》一天的新闻为基础提取的I.O.I的关联词。

keywords[:10]

[KeywordScore(word='아이오아이', frequency=270, score=1.0),
 KeywordScore(word='엠카운트다운', frequency=221, score=0.997897148491129),
 KeywordScore(word='펜타곤', frequency=104, score=0.9936420169665052),
 KeywordScore(word='잠깐', frequency=162, score=0.9931809154109712),
 KeywordScore(word='엠넷', frequency=125, score=0.9910325251765126),
 KeywordScore(word='걸크러쉬', frequency=111, score=0.9904705029926091),
 KeywordScore(word='타이틀곡', frequency=311, score=0.987384461584851),
 KeywordScore(word='코드', frequency=105, score=0.9871835929954923),
 KeywordScore(word='본명', frequency=105, score=0.9863934667369743),
 KeywordScore(word='엑스', frequency=101, score=0.9852544036088814)]

学习数据的形态(sparse martrix,index2 word)的话,使用MatrixbasedKeywordExtractor。

from soykeyword.proportion import MatrixbasedKeywordExtractor

matrixbased_extractor = MatrixbasedKeywordExtractor(
    min_tf=20,
    min_df=2,
    verbose=True
)

matrixbased_extractor.train(x, index2word)

详细的教程在{a4}。

一起使用《h2》的话,好的现场演唱会

soynlp

为了解决韩国语自然语处理的未注册单词问题,支持单词提取/单词提取机的学习结果的谈话年龄/品词辨别/正规化。

KoNLPy

KoNLPy是为了处理韩语信息的分组。分享,gogma,鼻子牡丹,MeCab-ko,推特韩语分析器,在FigSun环境中提供。

  • http://konlpy.org
  • 由于KoNLPy使用Java,所以需要Java和JPype。请务必查看网页的安装方法。

customized KoNLPy

为了更容易地处理未注册在KoNLPy上的单词,将模板和事先基础string match和KoNLPy一起使用的wrapping Pay软件包。

soyspacing

如果有

分写法错误,删除此选项,文本分析可能会变得容易。以分析数据为基础,学习分写入引擎,并利用此纠正分写入错误。

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

推荐PyPI第三方库


热门话题
java为什么会出现这些错误?表达式的非法开始   使用HttpUrlConnection的java测试URL仅适用于前面的www   在大数据集上使用kmeans的java堆外内存   查找Java RandomAccessFile如何以字符形式读取第n个字节   java Android从BroadcastReceiver获取标题和描述   java使用构造函数参数模拟嵌套类并测试方法   正在将Azure Blob项强制转换为Java文件对象   java并行运行testNG套件   java程序在运行时似乎没有进入   贬低Java规则引擎的优点和缺点   文本区域中的java中心文本   java JPA从多个表中选择错误   类Java问题使用类加载器重新加载代码   java如何在Spring非管理类上使用@Value   java(关闭)Gradle导入VS代码失败   java arraylist拆分(“空白”)并计算字数   Android/Java如何在单独的*中调用函数。java文件?   具有基本身份验证的java Apache Camel RSS模块   java为什么程序在出现溢出或下溢时不抛出异常