无监督关键字提取器
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
为了解决韩国语自然语处理的未注册单词问题,支持单词提取/单词提取机的学习结果的谈话年龄/品词辨别/正规化。
- https://github.com/lovit/soynlp
- pip install soynlp
KoNLPy
KoNLPy是为了处理韩语信息的分组。分享,gogma,鼻子牡丹,MeCab-ko,推特韩语分析器,在FigSun环境中提供。
- http://konlpy.org 由于KoNLPy使用Java,所以需要Java和JPype。请务必查看网页的安装方法。
customized KoNLPy
为了更容易地处理未注册在KoNLPy上的单词,将模板和事先基础string match和KoNLPy一起使用的wrapping Pay软件包。- https://github.com/lovit/customized_konlpy
- pip install customized_konlpy
soyspacing
如果有分写法错误,删除此选项,文本分析可能会变得容易。以分析数据为基础,学习分写入引擎,并利用此纠正分写入错误。
- https://github.com/lovit/soyspacing
- pip install soyspacing
- 项目
标签: