单词转换为数字向量_将数字转换为单词

数字转文字
本文提供了一种将数字转换为英文文字的VBA函数实现,详细介绍了如何通过分解数字并使用特定的英文词汇组合来表达任意大小的数值,包括整数和小数部分。

单词转换为数字向量

在访问对象对话框中,单击“模块”

单击新创建一个新模块

复制以下代码,然后将其粘贴到新模块中:


Function SayNo(ByVal N As Currency) As String 
    Const Thousand = 1000@
    Const Million = Thousand * Thousand
    Const Billion = Thousand * Million
    Const Trillion = Thousand * Billion 
    If (N = 0@) Then SayNo = "zero": Exit Function 
    Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = ""
    Dim Frac As Currency: Frac = Abs(N - Fix(N))
    If (N < 0@ Or Frac <> 0@) Then N = Abs(Fix(N))
    Dim AtLeastOne As Integer: AtLeastOne = N >= 1 
    If (N >= Trillion) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(Int(N / Trillion)) & " trillion"
        N = N - Int(N / Trillion) * Trillion
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= Billion) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(Int(N / Billion)) & " billion"
        N = N - Int(N / Billion) * Billion
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= Million) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(N \ Million) & " million"
        N = N Mod Million
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= Thousand) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(N \ Thousand) & " thousand"
        N = N Mod Thousand
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= 1@) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(N)
    End If 
    If (Frac = 0@) Then
        Buf = Buf
    ElseIf (Int(Frac * 100@) = Frac * 100@) Then
        If AtLeastOne Then Buf = Buf & " and "
        Buf = Buf & Format$(Frac * 100@, "00") & "/100"
    Else
        If AtLeastOne Then Buf = Buf & " and "
        Buf = Buf & Format$(Frac * 10000@, "0000") & "/10000"
    End If 
    SayNo = Buf
End Function 
Private Function SayNoDigitGroup(ByVal N As Integer) As String 
    Const Hundred = " hundred"
    Const One = "one"
    Const Two = "two"
    Const Three = "three"
    Const Four = "four"
    Const Five = "five"
    Const Six = "six"
    Const Seven = "seven"
    Const Eight = "eight"
    Const Nine = "nine"
    Dim Buf As String: Buf = ""
    Dim Flag As Integer: Flag = False 
    Select Case (N \ 100)
        Case 0: Buf = "": Flag = False
        Case 1: Buf = One & Hundred: Flag = True
        Case 2: Buf = Two & Hundred: Flag = True
        Case 3: Buf = Three & Hundred: Flag = True
        Case 4: Buf = Four & Hundred: Flag = True
        Case 5: Buf = Five & Hundred: Flag = True
        Case 6: Buf = Six & Hundred: Flag = True
        Case 7: Buf = Seven & Hundred: Flag = True
        Case 8: Buf = Eight & Hundred: Flag = True
        Case 9: Buf = Nine & Hundred: Flag = True
    End Select 
    If (Flag <> False) Then N = N Mod 100
    If (N > 0) Then
        If (Flag <> False) Then Buf = Buf & " "
    Else
        SayNoDigitGroup = Buf
        Exit Function
    End If 
    Select Case (N \ 10)
        Case 0, 1: Flag = False
        Case 2: Buf = Buf & "twenty": Flag = True
        Case 3: Buf = Buf & "thirty": Flag = True
        Case 4: Buf = Buf & "forty": Flag = True
        Case 5: Buf = Buf & "fifty": Flag = True
        Case 6: Buf = Buf & "sixty": Flag = True
        Case 7: Buf = Buf & "seventy": Flag = True
        Case 8: Buf = Buf & "eighty": Flag = True
        Case 9: Buf = Buf & "ninety": Flag = True
    End Select 
    If (Flag <> False) Then N = N Mod 10
    If (N > 0) Then
        If (Flag <> False) Then Buf = Buf & "-"
    Else
        SayNoDigitGroup = Buf
        Exit Function
    End If 
    Select Case (N)
        Case 0:
        Case 1: Buf = Buf & One
        Case 2: Buf = Buf & Two
        Case 3: Buf = Buf & Three
        Case 4: Buf = Buf & Four
        Case 5: Buf = Buf & Five
        Case 6: Buf = Buf & Six
        Case 7: Buf = Buf & Seven
        Case 8: Buf = Buf & Eight
        Case 9: Buf = Buf & Nine
        Case 10: Buf = Buf & "ten"
        Case 11: Buf = Buf & "eleven"
        Case 12: Buf = Buf & "twelve"
        Case 13: Buf = Buf & "thirteen"
        Case 14: Buf = Buf & "fourteen"
        Case 15: Buf = Buf & "fifteen"
        Case 16: Buf = Buf & "sixteen"
        Case 17: Buf = Buf & "seventeen"
        Case 18: Buf = Buf & "eighteen"
        Case 19: Buf = Buf & "nineteen"
    End Select 
    SayNoDigitGroup = Buf 
End Function 
保存该模块并调用它,例如NumbersToWords

现在从您的表单使用语法调用函数

说不(您的数值)

作为一个例子(由于我不知道您的技能水平,对不起),这就是我测试的方法。 完成上述步骤后,创建了一个带有文本框和标签的简单表单; txtTextNumbers和lblTextWords


Private Sub txtTextNumbers_Exit(Cancel As Integer)
     Me.lblTextWords.Caption = SayNo(Me.txtTextNumbers.Value)
End Sub 
输入数据并退出文本框后,标签将包含与输入数字相等的词。

当然,可以在其他事件中使用相同的代码。

作者仅被我称为M8KWR。

翻译自: https://bytes.com/topic/access/insights/625202-converting-numbers-words

单词转换为数字向量

Word2Vec.Net 是单词转换向量形式工具Word2Vec .NET版本。使用示例代码:            var builder = Word2VecBuilder.Create();             if ((i = ArgPos("-train",  args)) > -1)                 builder.WithTrainFile&#40;args[i   1]&#41;;             if ((i = ArgPos("-output", args)) > -1)                 builder.WithOutputFile&#40;args[i   1]&#41;;             //to all other parameters will be set default values             var word2Vec = builder.Build();             word2Vec.TrainModel();             var distance = new Distance(args[i   1]);             BestWord[] bestwords = distance.Search("some_word");或者//more explicit option         string trainfile="C:/data.txt";         string outputFileName = "C:/output.bin";         var word2Vec = Word2VecBuilder.Create()             .WithTrainFile&#40;trainfile&#41;// Use text data to train the model;             .WithOutputFile&#40;outputFileName&#41;//Use to save the resulting word vectors / word clusters             .WithSize(200)//Set size of word vectors; default is 100             .WithSaveVocubFile&#40;&#41;//The vocabulary will be saved to <file>             .WithDebug(2)//Set the debug mode (default = 2 = more info during training)             .WithBinary(1)//Save the resulting vectors in binary moded; default is 0 (off)             .WithCBow(1)//Use the continuous bag of words model; default is 1 (use 0 for skip-gram model)             .WithAlpha(0.05)//Set the starting learning rate; default is 0.025 for skip-gram and 0.05 for CBOW             .WithWindow(7)//Set max skip length between words; default is 5             .WithSample((float) 1e-3)//Set threshold for occurrence of words. Those that appear with higher frequency in the training data twill be randomly down-sampled; default is 1e-3, useful range is (0, 1e-5)             .WithHs(0)//Use Hierarchical Softmax; default is 0 (not used)             .WithNegative(5)//Number of negative examples; default is 5, common values are 3 - 10 (0 = not used)             .WithThreads(5)//Use <int
数字向量表示的文本数据转换为二维矩阵的方法有很多,其中比较常用的包括以下几种: 1. 使用词袋模型:将文本数据中出现的每个单词看作一个特征,将每个文本数据表示为一个向量向量中每个元素表示对应单词在该文本中出现的次数。将所有文本数据表示为一个矩阵,其中每一行表示一个文本数据的向量表示。 2. 使用 TF-IDF 模型:与词袋模型类似,但是将每个单词的重要性考虑在内,将每个单词的 TF-IDF 值作为该单词在文本数据中的权重,然后将每个文本数据表示为一个向量向量中每个元素表示对应单词的 TF-IDF 值。将所有文本数据表示为一个矩阵,其中每一行表示一个文本数据的向量表示。 3. 使用词嵌入模型:将每个单词映射为一个向量表示,然后将每个文本数据表示为单词向量的平均值或加权平均值。将所有文本数据表示为一个矩阵,其中每一行表示一个文本数据的向量表示。 4. 使用卷积神经网络(CNN)或循环神经网络(RNN):将每个文本数据表示为一个定长的向量,然后将所有文本数据表示为一个矩阵,其中每一行表示一个文本数据的向量表示。在 CNN 或 RNN 中,可以使用卷积或循环操作来处理矩阵数据,提取特征。 这些方法都可以将数字向量表示的文本数据转换为二维矩阵,具体应该根据具体任务和数据特点选择合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值