machine-learning - 生成相对于各个实体的嵌入关系/边缘值的上下文样本?
问题描述
我正在尝试构建自己的语料库/文本数据集来训练特定领域的NER
. 我的实体主要是基于数字的,部分依赖于上下文进行分类。没有适合我的情况的特定数据集。因此,我正在生成自己的文本和上下文。
我想到的想法是根据嵌入与我要分类的实体相似的单词生成上下文。确保上下文不断变化以保持模型的通用性并且不会过度拟合特定的单词。
一个类似的例子(不是我的具体情况)是:尝试在文本中标记 IP 地址。我的想法是找到与单词的文本嵌入相关的所有单词IP
or computer
。例如,类似的嵌入将software
具有0.8
边缘值。
我的问题是:
- 如何轻松地从嵌入层中提取相似的单词(例如 word2vec?)。我将如何确定截止点?列出从最高相似度到最低相似度的所有单词并手动确定一个截止点(当我认为该单词与实体的上下文不够相似时
ip address
)。还是自动化流程就足够了?提取所有单词直到指定的截止点,例如0.8
相似性边缘/关系值。 - 相对于实体的单词相似度,我应该生成多少样本?例如,我为实体生成 100 个样本文本,
IP address
然后我是否应该只基于单词生成 80 个上下文样本,software
因为它具有与的0.8
相似边缘/关系值ip address
?
解决方案
你的问题很难回答,因为它太抽象了。目前尚不清楚实际域是什么;没有你的“伪文本”的例子;您尝试过并且发现缺乏的事情没有中期结果,可据此提出改进建议。
因为在那个规格不足的水平上没有合适的答案,你可能不得不尝试一些事情,然后查看令人鼓舞和不满意的结果组合(可能在此处分享),以发现相似度水平的可能有用阈值或伪文本生成计数。
例如,来自这些模型的相似度值,即使它们总是在-1.0
范围1.0
内,也不能很好地映射到“X% 相似度”的人类概念。如果您更改模型元参数,令牌可能仍然具有非常相似的“前 10 个”邻居,但余弦相似度值却大不相同。(至少在您决定冻结模型元参数和训练数据的某些方面之前,排名顺序可能比原始余弦相似度数字更重要/更稳定。)因此,任何人都无法推荐阈值0.8
,或甚至可以确保任何这样的阈值都是有意义的,无需更多的领域/模型/最终目标特定的实验。(此时,也许可以在绝对余弦相似度或所有相似度的最高百分位数或某些邻居列表中发现一些特定于项目的阈值。)
同样,对于生成合成文本样本,也没有固定的答案。您需要真正的多样性来反映底层域的微妙之处。如果 1000 个样本的重复次数几乎相同,那么 1000 个样本并不比 100 个更好——你可以将 100 个样本每个重复 10 次,或者增加模型的训练“时期”,以获得相同的效果——但模型中的数据没有真正的变化不会学到更多。因此,您需要反复试验您的数据、模型和最终用途目标。
一些人已经将类似 word2vec 的算法应用于巨型图,方法是从通过图的各种长度的随机游走创建他们的“文本”。如何创建这样的游走——即一个特定的“节点”/唯一令牌“应该”在训练数据中出现数十次、数百次还是数千次——可能会受到该节点/令牌在下游应用程序中的重要性的影响,它的内缘和外缘有多少真正的多样性,等等。所以,这又是一个实验和反复试验的问题。
推荐阅读
- actionscript-3 - 如何根据动态文本的宽度创建动态下三分之一 i AS3
- playwright - Playwright 测试运行器:将测试限制为仅一个浏览器,其配置文件包含许多项目
- css - 打字机效果全幅
- jenkins - Jenkins 错误:在构建时找不到名为 toolbelt 的工具
- api - 是否有任何选项可以通过 PushBullet API 获取最后传入的短信?
- javascript - 如何从 JS 文件中的 groovy 控制器访问返回的对象
- selenium - XPATH 文本设置基于语言的动态值
- mysql - 在 Apache Superset SQL LAB 中计算同比增长时在查询中添加过滤器列
- python - 如何使用 Python 排序函数使用布尔比较函数对列表进行排序
- autocomplete - 当我按下分号和空格时,如何禁用自动完成弹出;