跳转到主要内容

以无监督方式在文档集中查找主题。

项目描述

主题查找器(无监督)工作在三个部分的过程。

安装

pip3 install topicfinder
  1. 对文档集进行分词。这将对文档集应用默认的wildgram分析以进行分词。文档必须以下面的结构存在,即字典列表。docID作为参数是可选的(如果不包含,id是数组中的索引)。
from topicfinder import getTokenLists
ret = getTokenLists([{"text": "boo", "docID": "1"}])
  1. 按唯一标记及其频率对整个标记集进行排序。
from topicfinder import getTokenLists, getPhrases
ret = getPhrases(getTokenLists([{"text": "boo", "docID": "1"}]))
  1. 根据相似性对短语进行分组,进行一些词元化(lemmatization)和模糊匹配。它认为任何单词或小于3个字母的词元化单词不可能分组。您还可以设置相似度阈值(1.0是精确匹配)。默认值(目前)为0.75。如果您有一个自定义的tokenType(例如,不是“token”或“noise”),则从wildgram生成,它将在该token上对标记进行分组。例如,在默认设置中,synopsis自动处理将数字组合在一起和否定。
from topicfinder import getTokenLists, getPhrases, groupPhrasesBySimilarity
ret = groupPhrasesBySimilarity(getPhrases(getTokenLists([{"text": "boo", "docID": "1"}])))

ret = groupPhrasesBySimilarity(getPhrases(getTokenLists([{"text": "boo", "docID": "1"}])),threshold=0.8)

## ret is a sorted list (descending order) of the following style of dictionaries
## {"phrases": [#list of phrases#], "tokens": [##list of unique tokens from the documents]}
## descending order by the size of the tokens array

您也可以仅调用

from topicfinder import synopsis
ret = synopsis([{"text": "boo", "docID": "1"}], threshold=0.8)

这将一次性执行步骤1-3。我将其分开,因为在医疗领域,有时需要根据数据集的大小运行和存储数据,或者进行map reduce操作,或者非常小心地处理PHI。

对于担心PHI的人来说——这一切都与互联网无关。它都是本地的。如果您需要,也可以检查代码。

主题查找器还可以通过topicfinder函数应用已知类别。

from topicfinder import topicfinder
ret = topicfinder({"text": "boo", "docID": "1"}, [{"unit": "TEST", "value": "BOO", "token": "boo", "frequency": 10}], threshold=0.8, normalizationCutoff=2)

topicfinder接受单个文档,以字典形式存在,其中text参数是需要分析的文本。topicfinder接受一系列主题(第二个参数),每个主题都是一个类似的字典:单位 - 参考单位(例如UMLS、ICD-10、自定义)值 - 值(例如代码)标记 - 需要匹配的示例短语频率 - 根据过去数据是任意还是真实。如果是任意的,则频率较高的先进行检查。

工作原理如下

  1. 对于wildgram创建的每个标记
  2. 对于每个主题,找到频率最高的主题,其标记示例与阈值以上的标记片段相似,并分配该主题。归一化cuffoff是一个简单的词干提取度量,如果较长的比较字符串小于截止值乘以较短的字符串长度,则将其缩短。
  3. 继续直到所有标记都被分配。

具有自定义tokenTypes或噪声(“否定”、“噪声”)的标记不会被检查。

它返回一个与wildgram生成的标记列表,但每个标记字典都被分配了一个主题键,该键是提供的主题(如果匹配)或空字典(如果不匹配)。

未来工作将包括

  1. 能够应用注释归一化函数(例如,一组同义词汇总)
  2. 创建一些默认的归一化函数(例如查询UMLS等) ---- 注意这可能需要连接到互联网才能工作。
  3. 更好地处理缩写和短词
  4. 更好地处理数字和时间长度

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

topicfinder-0.1.1.tar.gz (4.5 kB 查看哈希)

上传时间

构建分布

topicfinder-0.1.1-py3-none-any.whl (6.5 kB 查看哈希)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面