精华内容
下载资源
问答
  • true的白皮书翻译

    2018-06-06 17:13:23
    true的白皮书中文翻译,便于他人查看和阅读,可以更好学习区块链技术
  • vue中文翻译拼音组件 @ alidrus / vue-simple-inline-translation (@alidrus/vue-simple-inline-translation) A Vue component that simplifies the way text is translated: by translating it inline. Vue组件可...

    vue中文翻译拼音组件

    @ alidrus / vue-simple-inline-translation (@alidrus/vue-simple-inline-translation)

    A Vue component that simplifies the way text is translated: by translating it inline.

    Vue组件可简化文本的翻译方式:通过内联翻译。

    动机 (Motivation)

    From my observation throughout the years, I have noticed that in most (or all) translation systems, translated strings are looked up from an array or object which has to be maintained separately from the markup. While working on translating a page, one often has to open a split view in the editor to find the corresponding string to look up in the current portion of the markup. As a result, it becomes a little bit confusing for the person writing content (and markup) as they would need to keep things in sync and remember which lookup keys or symbols go into which portions of the page.

    通过多年来的观察,我注意到在大多数(或所有)翻译系统中,都是从数组或对象中查找已翻译的字符串,而这些数组或对象必须与标记分开维护。 在翻译页面时,通常必须在编辑器中打开一个拆分视图,以找到相应的字符串以在标记的当前部分中查找。 结果,对于编写内容(和标记)的人员来说,这变得有些混乱,因为他们需要使事物保持同步并记住哪些查找键或符号进入页面的哪些部分。

    So I wondered, what if there was a way to put the translations inline so that you can have the translated content and the original content placed side by side in the page's markup. This is where vue-simple-inline-translation comes in to the rescue.

    所以我想知道,是否有一种方法可以将翻译内联,以便您可以将翻译后的内容和原始内容并排放置在页面标记中。 这就是vue-simple-inline-translate进行救援的地方。

    安装 (Installation)

    With npm:

    使用npm:

    npm install @alidrus/vue-simple-inline-translation

    With yarn:

    含纱线:

    yarn add @alidrus/vue-simple-inline-translation

    用法示例: (Usage Examples:)

    The following is a simple example:

    以下是一个简单的示例:

    <template>
        <h1>
            <translate :current-language="current" language="en">Welcome</translate>
            <translate :current-language="current" language="ms">Selamat Datang</translate>
            <translate :current-language="current" language="tl">Maligayang Pagdating</translate>
        </h1>
    </template>
    
    <script>
    import { VueSimpleInlineTranslation } from '@alidrus/vue-simple-inline-translation';
    
    export default {
        components: {
            translate: VueSimpleInlineTranslation
        },
        data() {
            return {
                current: 'ms'
            };
        }
    }
    </script>

    Output (in HTML markup):

    输出(以HTML标记):

    <h1>Selamat Datang</h1>

    When the translation text contains HTML markup, it will automatically be enclosed within a <span> block by default. However, you can change the enclosing tag using the enclosing-tag attribute. For example, the following two translation blocks

    当翻译文本包含HTML标记时,默认情况下它将自动包含在<span>块中。 但是,您可以使用enclosing-tag属性更改封闭标签。 例如,以下两个翻译块

    <template>
        <p>
            <translate :current-language="current" language="en">
                To <b>boldly</b> go where no translation has gone before.
            </translate>
        </p>
    
        <translate enclosing-tag="p" :current-language="current" language="en">
            <span>To <b>boldly</b> go where no translation has gone before.</span>
        </translate>
    </template>

    would produce the same HTML markup:

    会产生相同HTML标记:

    <p><span>To <b>boldly</b> go where no translation has gone before.</span></p>

    For a more detailed example, check App.vue in the example/ folder.

    有关更详细的示例,请检查example /文件夹中的App.vue。

    可用道具 (Available props)

    PropTypeDefaultDescription
    current-languageStringCurrent language.
    languageStringLanguage of the translated text.
    enclosing-tagStringspanHTML tag used to enclose the translated text. By default, only applied when translation text contains HTML markup.
    force-tagBooleanfalseForce enclosing tag to be used even when translation is plain text without markup.
    tag-classObject{}CSS classes to apply to the enclosing tag. Same format as v-bind:class using an object.
    tag-styleObject{}CSS styles to apply to the enclosing tag. Same format as v-bind:style using an object.
    tag-attributesObject{}The enclosing tag's HTML attributes (property-value pairs).
    Struts 类型 默认 描述
    当前语言 String 当前语言。
    语言 String 翻译文本的语言。
    封闭标签 String span 用于封装翻译文本HTML标记。 默认情况下,仅当翻译文本包含HTML标记时才应用。
    强制标签 Boolean false 即使翻译是没有标记的纯文本,也强制使用封闭标签。
    标签类 Object {} 应用于封闭标签CSS类。 与使用对象的v-bind:class相同的格式。
    标签样式 Object {} 应用于封闭标记CSS样式。 与使用对象的v-bind:style格式相同。
    标签属性 Object {} 封闭标记HTML属性(属性值对)。

    设置道具值时的常见错误 (Common mistakes when setting prop values)

    没有v-bind (no v-bind)

    Not using v-bind (or the : shorthand) to set current-language, force-tag, tag-class, tag-style and tag-attributes properties.

    不使用v-bind (或:简写)来设置current-languageforce-tagtag-classtag-styletag-attributes的属性。

    For example:

    例如:

    <translate … force-tag="true" … >

    will set the force-tag prop to the string value "true" instead of boolean value true and this will produce an error when the prop fails to validate.

    将强制标签属性设置为字符串值"true"而不是布尔值true ,这将在属性验证失败时产生错误。

    错误的道具类型 (wrong prop type)

    Using an array for tag-class, tag-style or tag-attributes instead of an object.

    将数组用于tag-classtag-styletag-attributes而不是对象。

    For example:

    例如:

    <translate … v-bind:tag-class="[ 'has-text-bold', 'is-active' ]" … >

    will produce an error when the prop fails to validate.

    道具验证失败时,将产生错误。

    翻译自: https://vuejsexamples.com/a-vue-component-that-simplifies-the-way-text-is-translated-by-translating-it-inline/

    vue中文翻译拼音组件

    展开全文
  • vba英文翻译中文

    千次阅读 2019-10-15 19:32:03
    我们每天工作中都可能需要用到翻译工具,想着,要不做个翻译小功能玩玩? 有了个想法,咱就动手来开发试试? 随后,这种的百度了一下,找到了相应的文档,有了原材料,我们就可以来生产了! 1、建窗体 第一步还是...

    我们每天工作中都可能需要用到翻译工具,想着,要不做个翻译小功能玩玩?

    有了个想法,咱就动手来开发试试?

    随后,这种的百度了一下,找到了相应的文档,有了原材料,我们就可以来生产了!

    1、建窗体

    第一步还是我们经常做的,建个窗体

    控件 名称 属性
    文本框 txtCN 无
    文本框 txtEN 无
    按钮 btnTranslate 无

    2、添加代码
    Private Sub btnTranslate_Click()
        On Error Resume Next
    
        Dim strTemp As String
        Dim html As New HTMLDocument
        Dim url As String
      
        With CreateObject("Microsoft.XMLHTTP")
            
            strTemp = Me.txtCN
            url = "http://dict.youdao.com/search?q=" & strTemp & "&keyfrom=dict.index"
    
    '        Debug.Print url
            .Open "get", url, True
            .send
            While .ReadyState <> 4
                DoEvents
            Wend
                html.body.innerHTML = .responseText
                
                Me.txtEN = html.getElementsByClassName("baav")(0).innerText & vbCrLf
                Me.txtEN = Me.txtEN & html.getElementsByClassName("trans-container")(0).innerText
            
        End With
    End Sub
    
    
    3、 测试

    在这里插入图片描述

    更新请关注我的公众号,Access开发

    网站:添加链接描述在这里插入图片描述

    展开全文
  • i18n-replace 是一个能够自动替换中文并支持自动翻译的前端国际化辅助工具。 它具有以下功能: 根据你提供的默认映射数据({ 中文:变量 }),i18n-replace 会把中文替换成对应的变量。 如果没有提供映射数据,则...

    github 项目地址

    在这里插入图片描述

    i18n-replace 是一个能够自动替换中文并支持自动翻译的前端国际化辅助工具。

    它具有以下功能

    1. 根据你提供的默认映射数据({ 中文:变量 }),i18n-replace 会把中文替换成对应的变量。
    2. 如果没有提供映射数据,则使用默认规则替换中文并生成变量。
    3. 将替换出来的中文自动翻译成目标语言(默认为 en,即英语)。

    自动翻译功能使用的是百度免费翻译 API,每秒只能调用一次,并且需要你注册百度翻译平台的账号。

    然后将 appid 和密钥填入 i18n-replace 的配置文件 i18n.config.js,这个配置文件需要放置在你项目根目录下。

    使用

    安装

    npm i -g i18n-replace
    

    全局安装后,打开你的项目,建立一个 i18n.config.js 文件,配置项如下:

    module.exports = {
        delay: 1500, // 自动翻译延时,必须大于 1000 ms,否则调用百度翻译 API 会失败
        mapFile: '', // 需要生成默认 map 的文件
        appid: '', // 百度翻译 appid
        key: '', // 百度翻译密钥
        output: 'i18n.data.js', // i18n 输出文件
        indent: 4, // i18n 输出文件缩进
        entry: '', // 要翻译的入口目录或文件,默认为命令行当前的 src 目录
        prefix: '', // i18n 变量前缀  i18n 变量生成规则 prefix + id + suffix
        suffix: '', // i18n 变量后缀
        id: 0, // i18n 自增变量 id
        translation: false, // 是否需要自动翻译中文
        to: 'en', // 中文翻译的目标语言
        mode: 1, // 0 翻译所有 i18n 数据,1 只翻译新数据
        loader: 'loader.js',
        pluginPrefix: '$t', // i18n 插件前缀 例如 vue-i18n: $t, react-i18next: t
        include: [], // 需要翻译的目录或文件
        exclude: [], // 不需要翻译的目录或文件 如果 exclude include 同时存在同样的目录或文件 则 exclude 优先级高
        extra: /(\.a)|(\.b)$/, // 默认支持 .vue 和 .js 文件 如果需要支持其他类型的文件,请用正则描述 例如这个示例额外支持 .a .b 文件
    }
    

    上面是 i18n-replace 工具的配置项,具体说明请看文档

    这些配置项都不是必要的,如果你需要翻译功能,一般只需要填入 appid、key 并且将 translation 设为 true。

    设置完配置项后,执行 rep(这是一个全局命令),i18n-replace 就会对你的入口目录进行递归替换、翻译。

    i18n-replace 能识别以下中文:

    不能包含有空格,可以包含中文、中文符号,数字,-
    测试123
    测试-12-测试
    几点了?12点。
    

    DEMO

    更多测试用例,请查看项目下的 test 目录。

    jsx

    翻译前

    <div>
        <input
            type="二"
            placeholder="一"
            value="s 四 f"
        />
    
        <MyComponent>
            非常好 <header slot="header">测试</header> 非常好
            非常好 <footer slot="footer">再一次测试</footer> 非常好
        </MyComponent>
    </div>
    

    翻译后

    <div>
        <input
            type={this.$t('0')}
            placeholder={this.$t('1')}
            value={`s ${this.$t('2')} f`}
        />
    
        <MyComponent>
            {`${this.$t('3')} `}<header slot="header">{this.$t('4')}</header>{` ${this.$t('3')}`}
            {`${this.$t('3')} `}<footer slot="footer">{this.$t('5')}</footer>{` ${this.$t('3')}`}
        </MyComponent>
    </div>
    

    sfc

    翻译前

    <template>
        <div>
            有人<div value="二" :val="abc + '三 afb'">一</div>在国
        </div>
    </template>
    
    <script>
    export default {
        created() {
            const test = '测试'
        }
    }
    </script>
    

    翻译后

    <template>
        <div>
            {{ $t('0') }}<div :value="$t('1')" :val="abc + $t('2') + ' afb'">{{ $t('3') }}</div>{{ $t('4') }}
        </div>
    </template>
    
    <script>
    export default {
        created() {
            const test = this.$t('5')
        }
    }
    </script>
    

    文档

    在你的项目根目录下建立一个 i18n.config.js 文件,i18n-replace 将会根据配置项来执行不同的操作。

    注意,所有配置项均为选填。

    module.exports = {
        delay: 1500, // 自动翻译延时,必须大于 1000 ms,否则调用百度翻译 API 会失败
        mapFile: '国际化资源管理.xlsx', // 需要生成默认 map 的文件
        appid: '', // 百度翻译 appid
        key: '', // 百度翻译密钥
        output: 'i18n.data.js', // i18n 输出文件
        indent: 4, // i18n 输出文件缩进
        entry: 'src', // 要翻译的入口目录或文件,默认为命令行当前的 src 目录
        prefix: '', // i18n 变量前缀  i18n 变量生成规则 prefix + id + suffix
        suffix: '', // i18n 变量后缀
        id: 0, // i18n 自增变量 id
        translation: true, // 是否需要自动翻译中文
        to: 'en', // 中文翻译的目标语言
        mode: 1, // 0 翻译所有 i18n 数据,1 只翻译新数据
        loader: 'loader.js',
        pluginPrefix: '$t', // i18n 插件前缀 例如 vue-i18n: $t, react-i18next: t
        include: [],  // 需要翻译的目录或文件,如果为空,将不进行任何操作。
        exclude: [], // 不需要翻译的目录或文件 如果 exclude include 同时存在同样的目录或文件 则 exclude 优先级高
    }
    

    appid 和 key

    appid: '', // 百度翻译 appid
    key: '', // 百度翻译密钥
    

    这是百度免费翻译 API 的 appid 和密钥。

    如果你需要自动翻译,这两个是必填项。

    具体注册流程请看官网

    entry

    entry: 'src'
    

    入口目录或入口文件,默认为项目根目录下的 src 目录。

    替换或翻译将从这里开始。

    delay

    delay: 1500
    

    单位毫秒,默认 1500。

    百度翻译 API 调用延时,由于免费的翻译 API 1 秒只能调用一次,所以该选项必须大于 1000。经过本人测试,该项设为 1500 比较稳定。

    mapFile

    mapFile: 'data.js'
    

    如果你提供一个默认的映射文件(中文和变量之间的映射),本工具将根据映射文件将中文替换为对应的变量。

    例如有这样的映射关系:

    module.exports = {
        zh: {
            10000: '测试',
        },
        en: {},
    }
    

    和一个源码文件:

    const test = '一'
    

    启用工具后,源码文件中的 const test = '一' 将会被替换为 const test = this.$t('10000')

    所以如果你有默认的映射文件,请提供它的地址。

    loader

    loader: 'src/loader.js'
    

    i18n-replace 提供了一个内置的 loader,以便将下面的数据:

    module.exports = {
        zh: {
            10000: '测试',
        },
        en: {},
    }
    

    转换成 i18n-replace 要求的映射数据格式:

    {
        "测试": "10000",
    }
    

    所以为了能将其他文件翻译成这种格式,本工具提供了一个 loader 选项。

    这个 loader 是一个本地文件地址,你提供的文件需要写一个转换函数,将其他格式的文件转换成 i18n-replace 要求的数据格式,就像下面这个函数一样:

    const excelToJson = require('convert-excel-to-json')
    
    function translateExcelData(file, done) {
        const data = excelToJson({ sourceFile: file })
        const result = {}
        data.Sheet1.forEach(item => {
            if (item.C == '中文') {
                result[item.B] = item.A
            }
        })
    
        done(result)
    }
    
    module.exports = translateExcelData
    

    它接收两个参数,分别是文件地址 file 和 完成函数 done()

    支持异步操作,只要在转换完成时调用 done(result) 即可。

    prefix、suffix、id

    如果你没有提供一个默认映射文件,i18n-replace 在将中文替换成变量时,将遵循下面的公式来生成变量:

    prefix + id + suffix
    
    • id 默认为 0,自动递增。
    • 变量前缀,默认为空。
    • 变量后缀,默认为空。

    pluginPrefix

    pluginPrefix: '$t'
    

    翻译前缀,默认为 $t。请根据应用场景配置。

    例如 vue-i18n 国际化工具使用的是 $t,而 react-i18next 使用的是 t

    translation

    是否需要自动翻译,默认为 false

    如果设为 true,将会调用百度免费翻译 API 进行翻译。

    to

    翻译的目标语言,默认为 en,即英语。

    具体的配置项请查看百度翻译 API 文档

    mode

    翻译模式,默认为 1

    翻译模式有两种:01

    如果你提供了一个默认的映射文件:

    {
        "一": "10000",
        "二": "10001",
    }
    

    同时在替换过程中产生了两个新的变量,最后映射数据变成这样:

    {
        "一": "10000",
        "二": "10001",
        "三": "10002",
        "四": "10003"
    }
    

    这时,翻译模式为 0 将会对所有数据进行翻译。而翻译模式为 1 只对新产生的数据进行翻译。

    output

    翻译后的文件输出名称,默认为 i18n.data.js

    include

    工具默认翻译入口目录下所有的文件,如果你提供了 include 选项,将只会翻译 include 指定的目录或指定的文件。

    如果这个选项是一个空数组,将不会进行任何操作。

    exclude

    exclude 优先级比 include 高,如果有文件包含在 exclude 里面,它将不会被翻译。

    indent

    生成文件的缩进,默认为 4

    extra

    由于 i18n-replace 默认只支持 .vue 和 .js 文件。
    所以提供了一个 extra 选项,以支持其他的文件格式,它的值为正则表达式。

    extra: /(\.a)|(\.b)$/
    

    例如使用上述的正则表达式,i18n-replace 将额外支持 .a .b 文件

    展开全文
  • 该模型实现的是英文到中文翻译,下图为了更好展示模型架构用的大佬的图: 整体由encoder和decoder两大部分组成,每部分都有一个LSTM网络,其中encoder输入原始的句子,decoder输入的是含有开始符号的翻译后的...

    该模型实现的是英文到中文的翻译,下图为了更好展示模型架构借用大佬的图(这里没有用到Embeddings):

    本文完整代码:Github

    目录

    一、处理文本数据

    1.获得翻译前后的句子

     2.创建关于 字符-index 和 index -字符的字典

    3.对中文和英文句子One-Hot编码

    二、建立模型

    三、decoder预测每个字符

    四、训练模型

    五、展示


     



     整体由encoder和decoder两大部分组成,每部分都有一个LSTM网络,其中encoder输入原始的句子,输出状态向量;decoder输入的是含有开始符号的翻译后的句子,输出目标句子。

            具体步骤为:

    1.encoder将输入序列进行编码成状态向量

    2.decoder从第一个字符开始预测

    3.向decoder喂入状态向量(state_h,state_c)和累计包含之前预测字符的独热编码(第一次的状态向量来自于encoder,后来预测每            目标序列的每个字符时,状态向量来源于decoder,predict出来的状态向量)

    4.使用argmax预测对下一个字符的位置,再根据字典查找到对应的字符

    5.将上一步骤中的字符添加到 target sequence中

    6.直到预测到我们指定结束字符时结束循环

    一、处理文本数据

    这一步骤包含对原数据进行分割获得翻译前、后的句子,生成字符的字典,最后对翻译前后的句子进行One-Hot编码,便于处理数据。

    1.获得翻译前后的句子

    先看一下原数据的样式:

    首先导入需要的库:

    代码1.1.1

    import pandas as pd
    import numpy as np
    from keras.layers import Input, LSTM, Dense, merge,concatenate
    from keras.optimizers import Adam, SGD
    from keras.models import Model,load_model
    from keras.utils import plot_model
    from keras.models import Sequential
    
    #定义神经网络的参数
    NUM_SAMPLES=3000   #训练样本的大小
    batch_size = 64    #一次训练所选取的样本数
    epochs = 100       #训练轮数
    latent_dim = 256   #LSTM 的单元个数
    

    用pandas读取文件,然后我们只要前两列内容

    代码1.1.2

    data_path='data/cmn.txt'
    df=pd.read_table(data_path,header=None).iloc[:NUM_SAMPLES,0:2]
    #添加标题栏
    df.columns=['inputs','targets']
    #每句中文举手加上‘\t’作为起始标志,句末加上‘\n’终止标志
    df['targets']=df['targets'].apply(lambda x:'\t'+x+'\n')

    最后是这样的形式:

     

    然后分别把英文和中文数据转换为list形式

    代码1.1.3

    #获取英文、中文各自的列表
    input_texts=df.inputs.values.tolist()
    target_texts=df.targets.values.tolist()
    
    #确定中英文各自包含的字符。df.unique()直接取sum可将unique数组中的各个句子拼接成一个长句子
    input_characters = sorted(list(set(df.inputs.unique().sum())))
    target_characters = sorted(list(set(df.targets.unique().sum())))
    
    #英文字符中不同字符的数量
    num_encoder_tokens = len(input_characters)
    #中文字符中不同字符的数量
    num_decoder_tokens = len(target_characters)
    #最大输入长度
    INUPT_LENGTH = max([ len(txt) for txt in input_texts])
    #最大输出长度
    OUTPUT_LENGTH = max([ len(txt) for txt in target_texts])
    

     2.创建关于 字符-index 和 index -字符的字典

    代码1.2.1

    input_token_index = dict( [(char, i)for i, char in enumerate(input_characters)] )
    target_token_index = dict( [(char, i) for i, char in enumerate(target_characters)] )
    
    reverse_input_char_index = dict([(i, char) for i, char in enumerate(input_characters)])
    reverse_target_char_index = dict([(i, char) for i, char in enumerate(target_characters)])

    3.对中文和英文句子One-Hot编码

    代码1.3.1

    #需要把每条语料转换成LSTM需要的三维数据输入[n_samples, timestamp, one-hot feature]到模型中
    encoder_input_data =np.zeros((NUM_SAMPLES,INUPT_LENGTH,num_encoder_tokens))
    decoder_input_data =np.zeros((NUM_SAMPLES,OUTPUT_LENGTH,num_decoder_tokens))
    decoder_target_data  = np.zeros((NUM_SAMPLES,OUTPUT_LENGTH,num_decoder_tokens))
    
    for i,(input_text,target_text) in enumerate(zip(input_texts,target_texts)):
        for t,char in enumerate(input_text):
            encoder_input_data[i,t,input_token_index[char]]=1.0
    
        for t, char in enumerate(target_text):
            decoder_input_data[i,t,target_token_index[char]]=1.0
    
            if t > 0:
                # decoder_target_data 不包含开始字符,并且比decoder_input_data提前一步
                decoder_target_data[i, t-1, target_token_index[char]] = 1.0

    二、建立模型

    代码2.1

    
        #定义编码器的输入
        encoder_inputs=Input(shape=(None,num_encoder_tokens))
        #定义LSTM层,latent_dim为LSTM单元中每个门的神经元的个数,return_state设为True时才会返回最后时刻的状态h,c
        encoder=LSTM(latent_dim,return_state=True)
        # 调用编码器,得到编码器的输出(输入其实不需要),以及状态信息 state_h 和 state_c
        encoder_outputs,state_h,state_c=encoder(encoder_inputs)
        # 丢弃encoder_outputs, 我们只需要编码器的状态
        encoder_state=[state_h,state_c]
        
        #定义解码器的输入
        decoder_inputs=Input(shape=(None,num_decoder_tokens))
        decoder_lstm=LSTM(latent_dim,return_state=True,return_sequences=True)
        # 将编码器输出的状态作为初始解码器的初始状态
        decoder_outputs,_,_=decoder_lstm(decoder_inputs,initial_state=encoder_state)
        #添加全连接层
        decoder_dense=Dense(num_decoder_tokens,activation='softmax')
        decoder_outputs=decoder_dense(decoder_outputs)
        
        #定义整个模型
        model=Model([encoder_inputs,decoder_inputs],decoder_outputs)
           

     model的模型图:

    

    其中decoder在每个timestep有三个输入分别是来自encoder的两个状态向量state_h,state_c和经过One-Hot编码的中文序列 

    代码2.2

        #定义encoder模型,得到输出encoder_states
        encoder_model=Model(encoder_inputs,encoder_state)
        
        decoder_state_input_h=Input(shape=(latent_dim,))
        decoder_state_input_c=Input(shape=(latent_dim,))
        decoder_state_inputs=[decoder_state_input_h,decoder_state_input_c]
        
        # 得到解码器的输出以及中间状态
        decoder_outputs,state_h,state_c=decoder_lstm(decoder_inputs,initial_state=decoder_state_inputs)
        decoder_states=[state_h,state_c]
        decoder_outputs=decoder_dense(decoder_outputs)
        decoder_model=Model([decoder_inputs]+decoder_state_inputs,[decoder_outputs]+decoder_states)
        
        plot_model(model=model,show_shapes=True)
        plot_model(model=encoder_model,show_shapes=True)
        plot_model(model=decoder_model,show_shapes=True)
        return model,encoder_model,decoder_model

    encoder的模型图:

    

    decoder的模型图:

    三、decoder预测每个字符

    首先encoder根据输入序列生成状态向量states_value 并结合由包含开始字符"\t"的编码一并传入到decoder的输入层,预测出下个字符的位置sampled_token_index ,将新预测到的字符添加到target_seq中再进行One-Hot编码,用预测上个字符生成的状态向量作为新的状态向量。

    以上过程在while中不断循环,直到预测到结束字符"\n",结束循环,返回翻译后的句子。从下图可直观的看出对于decoder部分是一个一个生成翻译后的序列,注意蓝线的指向是target_squence,它是不断被填充的。

    代码3.1

    def decode_sequence(input_seq,encoder_model,decoder_model):
        # 将输入序列进行编码生成状态向量
        states_value = encoder_model.predict(input_seq)
    
        # 生成一个size=1的空序列
        target_seq = np.zeros((1, 1, num_decoder_tokens))
        # 将这个空序列的内容设置为开始字符
        target_seq[0, 0, target_token_index['\t']] = 1.
    
        # 进行字符恢复
        # 简单起见,假设batch_size = 1
        stop_condition = False
        decoded_sentence = ''
    
        while not stop_condition:
            output_tokens, h, c = decoder_model.predict([target_seq] + states_value)
    #        print(output_tokens)这里输出的是下个字符出现的位置的概率
    
            # 对下个字符采样  sampled_token_index是要预测下个字符最大概率出现在字典中的位置
            sampled_token_index = np.argmax(output_tokens[0, -1, :])
            sampled_char = reverse_target_char_index[sampled_token_index]
            decoded_sentence += sampled_char
    
            # 退出条件:生成 \n 或者 超过最大序列长度
            if sampled_char == '\n' or len(decoded_sentence) >INUPT_LENGTH  :
                stop_condition = True
    
            # 更新target_seq
            target_seq = np.zeros((1, 1, num_decoder_tokens))
            target_seq[0, 0, sampled_token_index] = 1.
    
            # 更新中间状态
            states_value = [h, c]
    
        return decoded_sentence
    

    四、训练模型

    model,encoder_model,decoder_model=create_model()
    #编译模型
    model.compile(optimizer='rmsprop',loss='categorical_crossentropy')
    #训练模型
    model.fit([encoder_input_data,decoder_input_data],decoder_target_data,
              batch_size=batch_size,
              epochs=epochs,
              validation_split=0.2)
    #训练不错的模型为了以后测试可是保存
    model.save('s2s.h5')
    encoder_model.save('encoder_model.h5')
    decoder_model.save('decoder_model.h5')

    五、展示

    if __name__ == '__main__':
        intro=input("select train model or test model:")
        if intro=="train":
            print("训练模式...........")
            train()
        else:
            print("测试模式.........")
            while(1):
                test()

     

     

    训练数据用了3000组 ,大部分是比较短的词组或者单词。效果不能算是太好,但是比起英语渣渣还算可以吧。

    Reference:

    https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html

    https://towardsdatascience.com/neural-machine-translation-using-seq2seq-with-keras-c23540453c74

     

    展开全文
  • sklearn API 文档 - 0.18 中文翻译

    万次阅读 2017-07-11 19:53:04
    Apache中文网 这是scikit学习的类和函数参考。有关详细信息,请参阅 完整的用户指南 ,因为类和功能原始规格可能不足以给出其使用的完整指导。   sklearn.base : Base classes ...
  • Truthy、Falsy与true、false的区别

    千次阅读 2018-11-12 09:47:26
    其实想了想也不必翻译,按照中文的感性理解,不就是“对的”,“能返回否的东西”嘛! 像很多语言一样,javascript也支持boolean数据类型(有true和false两个值),不过特别的是,javascript中的任何对象都还隐含一个boolean...
  • html页面国际化之谷歌翻译js实践,支持通过判断浏览器语言自动将中文翻译成英文实践过程 实践过程 最近boss提出了一个需求,需要支持打开的页面自动翻译成英文,csdn来回找资料,最终确定使用谷歌翻译js插件,这个...
  • 代码几乎照搬的【mr_guo_lei】python调用百度翻译api(自己写的非官方demo) import requests, string, time, hashlib, json # 初始化API,用户ID和密码 api_url = ...
  • CRON表达式翻译中文描述

    千次阅读 2020-11-18 11:20:58
    将CRON表达式翻译中文描述,复杂的CRON表达式会有问题,直接用的话,请自行调整。 package com.example.util; import lombok.experimental.UtilityClass; import org.apache.commons.lang.StringUtils; /** * ...
  • 中文翻译sklearn.naive_bayes.MultinomialNB

    千次阅读 2019-06-19 10:58:42
    class sklearn.naive_bayes.MultinomialNB(alpha = 1.0, fit_prior= True, class_prior= None) 概念解释 针对多项式模型的朴素贝叶斯(Naive Bayes)分类器。 多项式朴素贝叶斯分类器适合离散特征的分类问题。...
  • C#使用Google翻译实现在线翻译

    千次阅读 2020-08-25 18:01:19
    } /// /// 谷歌翻译 /// /// 待翻译文本 /// 自动检测:auto /// 中文:zh-CN,英文:en /// 翻译后文本 public static string Translate(string text, string fromLanguage, string toLanguage) { CookieContainer...
  • NodeMCU文档中文翻译 6 MQTT模块

    千次阅读 2017-05-18 00:28:51
    true ,失败 false 3、mqtt.client:connect() 根据主机名、端口号和安全配置连接服务器。 语法   mqtt:connect(host[, port[, secure[, autoreconnect]]][, function(client)[, function...
  • 该模型实现的是英文到中文翻译,下图为了更好展示模型架构借用大佬的图(这里没有用到Embeddings): 本文完整代码:Github 目录 一、处理文本数据 1.获得翻译前后的句子  2.创建关于 字符-index 和...
  • 请设计程序和相应的数据结构,使小王能记录新学的英文单词和其中文翻译,并能很方便地根据英文来查找中文。(参考:数据结构建议用集合。集合添加: dic[key]=value 判断 key 是否在集合中: if key in dic)   一...
  • spring.aop.proxy-target-class = true #是否要创建基于子类的(CGLIB)代理(true),而不是基于标准Java接口的代理(false)。 #IDENTITY (ContextIdApplicationContextInitializer)  spring.application....
  • libmodbus官方手册中文翻译

    万次阅读 多人点赞 2018-08-29 00:02:33
    最近做libmodbus相关内容,因为中文没有libmodbus各个函数的详细解释,所以在此把要用的libmodbus的官方手册包括所有的函数都翻译整理一下,给自己和大家们学习,欢迎大家交流指正。手册原文...
  • Python实现中英文翻译方法总结

    千次阅读 2019-05-24 09:32:19
    Table of Contents 1  ...百度翻译API, 实现文献翻译及日常单词翻译1.3  谷歌在线翻译模块:Google translate python1.4  有道在线翻译模块:基于有道云翻译API的Pyth...
  • 百度文库中文 https://www.elsevier.com/journals/communications-in-nonlinear-science-and-numerical-simulation/1007-5704?generatepdf=true 官方文件
  • def translationChtoEn(list): import urllib.request import urllib.parse import json while True: content = list if content == 'Q': break else:
  • c语言error中文翻译

    千次阅读 2016-07-02 21:52:04
    中文对照:(编译错误)错误太多,停止编译 分析:修改之前的错误,再次编译 fatalerror C1004: unexpected end of file found 中文对照:(编译错误)文件未结束 分析:一个函数或者一个结构定义缺少“}”、...
  • conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out....
  • 将QMessageBox的Yes和No按钮翻译中文

    千次阅读 2017-07-14 12:31:25
    * @brief Base::question 根据被点击的按钮,返回true或者false * @param buttonYesText 按钮Yes的文本 * @param buttonNoText 按钮No的文本 * @param title 窗口标题 * @param content 提问内容 * @return 当...
  • python-docx 中文个人翻译

    千次阅读 2018-10-26 22:26:00
    PS:哪里有翻译不好的地方请留言,翻译到后面的时候时间比较紧张,因此采用的是机器翻译,后面也没有仔细查阅,另外本人英语也不算多好,所以还请大家指正。 目录 说明 python-docx是一个用于创建和更新...
  • ValueAnimator 中文翻译

    千次阅读 2016-07-19 17:05:23
    ValueAnimator 中文翻译
  • Python 打造基于百度翻译的命令行翻译工具 由于英文水平一般,所以还是非常依赖翻译工具的。fanyi.baidu.com 都成了我浏览器必开的网页之一了。昨天项目上线,等待过程中,无聊写了一个基于百度翻译 api 的命令行...
  • 很多人问博主:市面上很多翻译软件,他们是怎么实现的呢? 比如腾讯QQ最新版本的QQ可实现截图翻译: 博主实现的软件预览:     博主今天就来给大家讲解一下基础版本的翻译软件是如何实现的...
  • Next.js v4.1.4 文档中文翻译

    千次阅读 2017-11-02 11:43:06
    Next.js v4.1.4 中文翻译
  • python实现有道翻译英文转中文

    千次阅读 2017-10-15 10:28:14
    python有道翻译英文转中文
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    // true 代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。 equals 解读 equals ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,375
精华内容 23,750
关键字:

true中文翻译