Nlp word2vec或基于位置查找同义短语的替代方法

Nlp word2vec或基于位置查找同义短语的替代方法,nlp,word2vec,Nlp,Word2vec,我在一家医院工作。我现在的任务之一是从受控词汇表(RxNorm)中查找代码,这些代码对应于电子健康记录中药物的字符串表示 例如,“500毫克泰诺片剂”将使用 现在有很多方法可以做到这一点。我想通过查找缩写和其他标记来优化我们的成功,这些缩写和标记在我们的中介字符串中很常见,但在RxNorm中的任何药物标签中都不常见 例如,“500毫克泰诺-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛

我在一家医院工作。我现在的任务之一是从受控词汇表(RxNorm)中查找代码,这些代码对应于电子健康记录中药物的字符串表示

例如,“500毫克泰诺片剂”将使用

现在有很多方法可以做到这一点。我想通过查找缩写和其他标记来优化我们的成功,这些缩写和标记在我们的中介字符串中很常见,但在RxNorm中的任何药物标签中都不常见

例如,“500毫克泰诺-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息痛-扑热息。它似乎工作得很好,但只适用于完美的单词匹配

word2vec或其他什么东西能检测出“po tab”和“oral table”之间的相似性吗?因为EHR经常包含如下字符串

“废话废话”选项卡

RxNorm已经

“诸如此类的口服药片”

用同样的“废话”

我试着按照word2vec演示脚本进行操作,但几乎听到了所有的噪音。很明显,我的字符串本身就是短句,而不是叙述中的片段。训练集太小了。。。 到目前为止,我一直在训练一个具有良好特征的语料库,该语料库包含11026087个(非唯一)单词,分布在2148750行中


我一直在使用在MacOS clang下编译的,没有任何改动。

虽然这些小短语与word2vec及相关算法通常使用的各种自然语言文本不太一样,但如果有足够的数据,可能会有所帮助。它将倾向于了解哪些词是“高度相关的”,即使不是确切的同义词

最好的数据会有很多关于每个标记在不同上下文中使用的例子,包括不同行话的混合。例如,如果您只有包含以下内容的培训数据

blah blah oral tablet
blah blah po tab
…如果你也有包括以下内容的培训示例,它将更难发现“口头”和“po”与“平板电脑”和“标签”之间的相似之处:

blah blah oral tab
blah blah po tablet
(也就是说:在行话混合中稍微混乱/渐进的数据可能比完全分离备用约定的数据要好。)

当你说你得到“所有噪音”时,最相似的单词列表对你的目的是否合理?(例如,培训后“口头”和“po”是否非常接近?)。否则,您的数据或培训参数可能不足或存在其他问题

在训练中,对于较小或变化较小的数据,减少向量维数或增加训练次数有助于挤出有意义的最终向量位置。如果您的数据具有某种自然的排序顺序,可以将所有相关的项目组合在一起,这样某些单词只会出现得很早或很晚,那么最初的示例混乱可能会有一些帮助

窗口
参数在影响生成的模型是强调精确的“句法”(替换词的插入)相似性,还是强调一般的领域/主题相似性方面尤其有影响。较小的窗口(只说1-3个单词)强调插入替换词(同义词和反义词),而较大的窗口则发现更多的一般关联

(有关更多上下文,请参阅一篇文章的链接,该文章观察到了这种窗口大小效应。)

如果管道的任何部分使用Python,或者您想尝试一些初始Google
word2vec.c
(比如使用非默认的
ns_指数
值,一篇论文认为这在推荐应用中特别有用,因为相关的项目篮标记频率与自然语言有些不同)

如果你的许多“未知”单词实际上是已知单词的缩写或打字错误,那么使用Facebook的“FastText”对word2vec进行细化可能会有所帮助。它还可以学习子单词的向量,因此将“tab”和“tablet”拉近彼此的距离,当遇到一个从未见过的单词时,可以从这些单词片段中组合出一个候选向量通常比随机猜测要好,就像人们从词根直观地理解一个单词的一般要点一样。(Python gensim还包含一个FastText实现。)

如果您确实实现了一个单词模型,其中最相似的单词列表对您来说似乎是合理的,那么您可以尝试:

  • 当你的文本中有你知道不在“RxNorm”中的单词时,试着用它们在“RxNorm”中的最近邻替换未知单词

  • 使用“单词移动器距离”将你的短语与已知短语进行比较-它通常擅长量化短短语之间的移动,使用单词向量作为输入。这在较大的文本上很昂贵,但在4-6个单词片段上可能非常有效。(它在gensim单词向量类中作为
    .wmdistance()提供)
    方法。)

最后,在一定程度上,“tab”->“tablet”类型的精确替换数量有限,用专家确认的同义词逐步替换word2vec分析中的任何模糊发现似乎是一个好主意,用确定的东西取代统计猜测

回到上面的例子,如果你已经知道“tab”->“tablet”,但还不知道“po”->“oral”,那么把所有包含“tab”或“tablet”的文本都翻过来,创建新的合成示例,并将该单词颠倒过来,这可能会给后续的word2vec培训带来额外的提示/推动,让你能够意识到这一点‘po’/‘oral’与‘tab’/‘tablet’的相对角色相同。

word2vec或其他东西能检测出‘po-tab’和‘oral tablet’之间的相似性吗?当然不能,它们不是