我用SMT的短语提取算法编写了以下代码.
# -*- coding: utf-8 -*-
def phrase_extraction(srctext, trgtext, alignment):
"""
Phrase extraction algorithm.
"""
def extract(f_start, f_end, e_start, e_end):
phrases = set()
# return { } if f end == 0
if f_end == 0:
return
# for all (e,f) ? A do
for e,f in alignment:
# return { } if e < e start or e > e end
if e < e_start or e > e_end:
return
fs = f_start
# repeat-
while True:
fe …
Run Code Online (Sandbox Code Playgroud) Python NLTK中有BLEU得分的实现,
nltk.translate.bleu_score.corpus_bleu
但我不确定它是否与mtevalv13a.pl脚本相同.
他们之间有什么区别?
我正在做一个项目,在句子和其他语言的翻译之间建立高精度的词对齐,以衡量翻译质量。我知道 Giza++ 和其他单词对齐工具被用作统计机器翻译管道的一部分,但这不是我要找的。我正在寻找一种算法,可以将源句子中的单词映射到目标句子中的相应单词,并且在考虑到这些限制的情况下透明而准确:
这是我所做的:
这是英语和德语句子之间的相关矩阵的示例。我们可以看到上面讨论的挑战。
图中有一个英文和德文句子对齐的例子,展示了单词之间的相关性,绿色单元格是应该由单词对齐算法识别的正确对齐点。
这是我尝试过的一些内容:
这是我正在使用的代码:
import random
src_words=["I","know","this"]
trg_words=["Ich","kenne","das"]
def match_indexes(word1,word2):
return random.random() #adjust this to get the actual correlation value
all_pairs_vals=[] #list for all the source (src) and taget (trg) indexes and the corresponding correlation values
for i in range(len(src_words)): #iterate over src indexes
src_word=src_words[i] #identify the correponding …
Run Code Online (Sandbox Code Playgroud) 目前 Helsinki-NLP/opus-mt-es-en 模型从 Transformer 进行推理大约需要 1.5 秒。怎样才能减少呢?此外,当尝试将其转换为 onxx 运行时时出现此错误:
ValueError:无法识别此类 AutoModel 的配置类 <class 'transformers.models.marian.configuration_marian.MarianConfig'>:AutoModel。模型类型应为 RetriBertConfig、MT5Config、T5Config、DistilBertConfig、AlbertConfig、CamembertConfig、XLMRobertaConfig、BartConfig、LongformerConfig、RobertaConfig、LayoutLMConfig、SqueezeBertConfig、BertConfig、OpenAIGPTConfig、GPT2Config、MobileBertConfig、TransfoXLConfig、XLNetConfig、FlaubertConfig、FSMTConfig、XLMConfig、CTRLConfig 之一, ElectraConfig、ReformerConfig、FunnelConfig、LxmertConfig、BertGenerationConfig、DebertaConfig、DPRConfig、XLMProphetNetConfig、ProphetNetConfig、MPNetConfig、TapasConfig。
是否可以将其转换为 onxx 运行时?
我目前正在比较各种预训练的 NMT 模型,不禁想知道 MarianMT 和 OpusMT 之间有什么区别。根据 OpusMT 的Github,它是基于 MarianMT 的。然而,在Huggingface Transformer 实现中,所有预训练的 MarianMT 模型均以“Helsinki-NLP/opus-mt”开头。所以我认为它们是相同的,但即使它们的大小大致相同,它们也会产生不同的翻译结果。
如果有人可以阐明其中的差异,我将非常感激。
Python中是否有一个开源库,可以将汉字数字转换为阿拉伯数字?
输入:10?2?9 ??
产量:1,029,000,000
输入:1?
6,717 ?2,600 输出:167,172,600
输入:3,139 ??
产量:3,139,000,000
我用2种语言开发了一个网站.
一个选择是我们可以做自己的翻译,但这可能需要更多的开发时间.
所以我想找一个插件.
我尝试了Microsoft Translator Widget和谷歌翻译小工具, 但两者都不适用于完整的网站.用户必须在网站的每个页面上选择他们的语言.任何其他插件都可以翻译整个网站.我读了很多线程,比如 link1 link2.注意到了帮助我.
请建议.
在研究了编译器及其工作原理后,我了解到该过程通常分为4个步骤:预处理器,编译器,汇编器和链接器.我设想这些步骤的方式是每个人都有自己独立的程序; 预处理程序,编译程序,汇编程序和链接程序.但是,您了解到有时创建汇编代码和生成目标文件的过程全部由编译器程序处理,有时则不处理.它似乎很大程度上取决于所使用的上下文和编程语言.我的问题是,如何将C++源代码转换为机器代码的典型翻译过程如何?
旁注:我的问题与其他C++编译器线程不同,因为我不仅询问编译器如何工作,而且如果某些其他进程(如链接)存在自己的可执行程序,或者它们通常内置于编译器程序中.
前提1:
关于 RNN 层中的神经元 - 我的理解是“在每个时间步长,每个神经元都接收输入向量 x (t) 和来自前一个时间步长 y (t –1) 的输出向量” [1]:
前提2:
也是我的理解,在Pytorch的GRU层中,input_size和hidden_size的含义如下:
- input_size – 输入 x 中预期特征的数量
- hidden_size – 隐藏状态中的特征数 h
所以很自然地,hidden_size应该代表 GRU 层中的神经元数量。
我的问题:
给定以下 GRU 层:
# assume that hidden_size = 3
class Encoder(nn.Module):
def __init__(self, src_dictionary_size, hidden_size):
super(Encoder, self).__init__()
self.embedding = nn.Embedding(src_dictionary_size, hidden_size)
self.gru = nn.GRU(input_size = hidden_size, hidden_size = hidden_size)
Run Code Online (Sandbox Code Playgroud)
假设 hidden_size 为 3,我的理解是上面的 GRU 层将有 3 个神经元,每个神经元在每个时间步同时接受一个大小为 3 的输入向量。
我的问题是:为什么hidden_size和input_size …
python machine-translation deep-learning recurrent-neural-network pytorch
在数值回归任务的典型 Shapley 值估计中,有一种明确的方法可以计算输入特征 i 对最终数值输出变量的边际贡献。对于输入特征(age=45,location=\xe2\x80\x99NY\xe2\x80\x99,sector=\xe2\x80\x99CS\xe2\x80\x99),我们的模型可能给出70k的预测工资,并且当该位置被删除时,预计薪资可能为 45k。因此,该特定联盟中特征位置的边际贡献为 70-45=25k。
\n根据我的理解,如果不存在任何功能\xe2\x80\x99s,则基值将是预测工资,并且将基值和所有功能贡献相加将得到模型\xe2\x80\x99s给定实例的实际工资预测。
\n将其扩展到分类
\n假设我们将上述问题转换为分类问题,其中使用相同的特征,并且模型输出可以解释为该人做出> 50k的概率。在此示例中,对 p(>50k) 的影响将是测量的内容,而不是对工资本身的影响。如果我正确地遵循了这一点,那么我的 Shapley 值就可以解释为概率。
扩展到词嵌入
\n从 SHAP 文档中,我们可以看到 SHAP 解释器可以计算 Seq2Seq NMT 问题的特征贡献。\n就我而言,我正在使用 Marian NMT 库处理神经机器翻译问题。这是一个序列到序列的问题,其中字符串输入被编码为词嵌入,并从此类词嵌入解码输出。我的问题涉及这种功能贡献的逻辑如何在理论和实践中扩展到这样的问题。我发现SHAP 分区解释器为我提供了 NMT 任务的可靠特征归因,但我不明白为什么。
更简洁地说:
\n对于通常输出单词嵌入列表的模型,如何使用 SHAP 库计算特征贡献?
简要示例
\n为了查看我提到的 SHAP 值,请运行以下 MRE。
import shap\nfrom transformers import MarianMTModel, MarianTokenizer\n\nclass NMTModel:\n def __init__(self, source, target):\n model_name = "Helsinki-NLP/opus-mt-{}-{}".format(source, target)\n\n #The tokenizer converts the text to a more NN-suitable\n #format, as it cannot …
Run Code Online (Sandbox Code Playgroud)