演绎:荷兰医学文本的识别方法

deduce的Python项目详细描述


推导:荷兰医学文本的去识别方法

此项目包含用于推断的代码:如Menger et al (2017)中所述的荷兰语医学文本的反标识方法。医学文本的去识别是利用文本数据进行分析,符合法律要求,保护患者隐私的需要。在我们的基于健康模式的匹配方法中,删除了以下基于健康模式的PHI:

  1. 人名,包括姓名首字母
  2. 地理位置比一个国家小
  3. 与患者治疗相关的机构名称
  4. 日期
  5. 年龄
  6. 患者编号
  7. 电话号码
  8. 电子邮件地址和URL

该方法的开发和工作及其验证的详细信息见:

Menger, V.J., Scheepers, F., van Wijk, L.M., Spruit, M. (2017). DEDUCE: A pattern matching method for automatic de-identification of Dutch medical text, Telematics and Informatics, 2017, ISSN 0736-5853

演示

代码的交互式演示可以在here找到

先决条件

  • nltk

安装

安装可以通过pip和git完成:

>>>pipinstalldeduce

或者从源代码下载并使用python安装:

^{pr2}$

入门

该包有一个用于注释(annotate_text)和删除注释(deidentify_annotations)的方法。在

importdeducededuce.annotate_text(text,# The text to be annotatedpatient_first_names="",# First names (separated by whitespace)patient_initials="",# Initialpatient_surname="",# Surname(s)patient_given_name="",# Given namenames=True,# Person names, including initialslocations=True,# Geographical locationsinstitutions=True,# Institutionsdates=True,# Datesages=True,# Agespatient_numbers=True,# Patient numbersphone_numbers=True,# Phone numbersurls=True,# Urls and e-mail addressesflatten=True# Debug option)deduce.deidentify_annotations(text# The annotated text that should be de-identified)

示例

>>>importdeduce>>>text=u"Dit is stukje tekst met daarin de naam Jan Jansen. De patient J. Jansen (e: j.jnsen@email.com, t: 06-12345678) is 64 jaar oud enwoonachtiginUtrecht.Hijwerdop10oktoberdoorartsPeterdeVisserontslagenvandekliniekvanhetUMCU.">>>annotated=deduce.annotate_text(text,patient_first_names="Jan",patient_surname="Jansen")>>>deidentified=deduce.deidentify_annotations(annotated)>>>print(annotated)"Dit is stukje tekst met daarin de naam <PATIENT Jan Jansen>. De <PATIENT patient J. Jansen> (e: <URL j.jnsen@email.com>, t: <TELEFOONNUMMER 06-12345678>) is<LEEFTIJD64>jaaroudenwoonachtigin<LOCATIEUtrecht>.Hijwerdop<DATUM10oktober>doorarts<PERSOONPeterdeVisser>ontslagenvandekliniekvanhet<INSTELLINGumcu>.">>>print(deidentified)"Dit is stukje tekst met daarin de naam <PATIENT>. De <PATIENT> (e: <URL-1>, t: <TELEFOONNUMMER-1>) is <LEEFTIJD-1> jaar oud en woonachtig in <LOCATIE-1>.Hijwerdop<DATUM-1>doorarts<PERSOON-1>ontslagenvandekliniekvanhet<INSTELLING-1>."

配置

data/文件夹中的查找列表可以根据用户的特定需求进行定制。特别推荐在机构名称列表中使用,因为默认情况下,它们是根据方法的开发和测试位置定制的。正则表达式可以在annotate.py中修改,这与建议检测患者编号的原因相同。在

贡献

我们非常欢迎对Devere项目的贡献-请随时通过问题或电子邮件与作者联系。在

版本控制

1.0.2-发布到PyPI

1.0.1-无输入的小错误修复

1.0.0-初始版本

作者

  • Vincent Menger-初始工作
  • Jonathan de Bruin-Code review

许可证

此项目是在GNU LGPLv3许可下授权的-有关详细信息,请参阅LICENSE.md文件

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

推荐PyPI第三方库


热门话题
java更改WSO2 IS证书会导致登录失败   安卓 Java随机行读取   JavaJComboBox留下了一条线索   用于嵌套对象的java Jasper报告   java动态生成Id值时,如何检索复选框的值   “拼接(a,b,…”的Java等价方法在JavaScript方法中   java在有子面板的jPanel上绘图   java生成时,在包“安卓”中找不到属性“text color”的资源标识符   java如何使用maven插件正确地构建Spring引导远jar?   readUTF中的java EOFEException   在Java中,按星期一到星期天进行排序   java MultiFormatReader无法读取qr,尽管qr是可扫描的   替换java字符串中未知数量的值   java将MySQL连接到Apache nutch   Java从3个不同的枚举中获取随机值   java我需要将多个JRadioButtongGroup和一个jcombobox连接到一个jbutton   java Android sqlite异常。无法实例化活动   如何使用单流创建Map<String,List<Long>>Java8?