python - 跳过 EMR 的重复项
问题描述
我目前有大量的医疗记录,其中包括需要翻译的医疗术语。出于成本考虑,我们不想翻译每条记录的每个术语。例如,如果我们发现一条记录中的术语已经频繁出现在以前的记录中,这意味着这些术语可能已经在以前的记录中翻译过,那么我们不想再次翻译它们。我被要求设计一个程序来实现这个目标。我得到的提示是我可能需要将记录打破到字母级别,并且可能需要矩阵来解决这个问题。我实际上是编程的初学者。因此,我在这里寻求帮助。残酷的想法/建议现在就足够了。谢谢。
[由 Spektre 编辑] 从评论中移出
我的问题归结为:
说有两个句子A
和B
。A
有m
令牌(a1, a2, ……, am)
和B
有n
令牌(b1, b2, ……, bn)
。WhileA
和B
可能有共同的标记。所以我需要一个函数来估计 B 中未被 A 覆盖的令牌的可能性。
令牌已经存储在字典中。
如何实施?
解决方案
因此,如果我没看错,您想知道是否bi
不在A
.
我不在 python 中编码,但我看到它是这样的(在类似C++的语言中)
bool untranslated(int j,int m,int n,string *a,string *b)
{
// the dictionaries are: a[m],b[n]
for (int i=0;j<m;i++) // inspect all tokens of A
if (b[j]==a[i]) // if b[j] present in A
return false;
return true;
}
现在,如果字典相当大,那么您需要将此线性搜索更改为二分搜索。另外为了加快速度(如果单词很大),您需要使用散列(散列映射)进行匹配。粗略取决于您的语言,您不能天真地比较单词,==
而是实现一些功能,将单词转换为其单纯形语法形式并将其存储到字典中。实现起来可能非常复杂。
现在整个句子的概率是:
// your dictionaries:
const int m=?,n=?;
string A[m],string B[n];
// code:
int j; float p;
for (p=0.0,j=0;j<n;j++) // test all words of B
if (untranslated(j,m,n,A,B)) p++; // and count how many are untranslated
p/=float(n); // normalize p to <0,1> its your probability that sentence B is not in A
结果概率p
在范围内<0,1>
,所以如果你想要百分比而不是乘以100
.
[Edit1] 发生bi
那是完全不同的问题,但也相对容易解决。它与计算直方图相同,因此:
A
为字典中的每个单词添加计数器所以 A 的每条记录都是这样的:
struct A_record { string word; int cnt; }; int m=0; A_record a[];
处理
B
句子在每个单词上
bi
查字典A
。如果不存在,则将其添加到字典并将其计数器设置为1
. 如果存在,则只需将其计数器增加一即可。const int n=?; // input sentence word count string b[n]={...}; // input sentence words int i,j; for (i=0;i<n;i++) // process B for (j=0;j<m;j++) // search in A (should be binary search or has-map search) if (b[i]==a[j].word) { a[j].cnt++; j=-1; break; } // here a[j].cnt is the bi occurrence you wanted if divided by m then its probability <0,1> if (j<0) { a[m].word=b[i]; a[m].cnt=1; m++; } // here no previous occurrence of bi
现在,如果您只想要前一次出现,
bi
那么在a[j].cnt
搜索过程中查看匹配项。如果您想在整个文本中出现任何b[i]
单词,请在处理整个文本后查看相同的计数器。
推荐阅读
- c - 根据 C 标准的默认参数提升
- python - 我们如何从 python 程序/脚本创建别名?
- php - 如何在 WordPress (Moderne) 上的网站标题中显示不同的颜色?
- angularjs - Angular 9 - 如何使用组件降级多个模块?
- c++ - 如何从 CLion 的运行窗口中删除程序项目路径
- r - 感悟者的错误
- google-apps-script - 如何使用 Google Apps 脚本引用外部电子表格
- sql - 使用自左外连接的 SQL 练习
- java - 服务使用时如何访问资源对象?
- flutter - Listview Builder 导致 Flutter 中重新加载消费者