模型:

1-800-BAD-CODE/punct_cap_seg_47_language

英文

模型概述

该模型接受以47种语言为输入的小写、无标点、未分割的文本,并进行标点符号还原、大小写转换和句子边界检测(分割)。

所有语言都使用相同的算法进行处理,无需语言标签或语言特定的分支。这包括连续脚本和非连续脚本的语言、预测语言特定的标点符号等。

这个模型很有趣,但结果可能还有待提高。我建议试用以下更新而更好的模型:

使用方法

使用该模型的简单方法是安装punctuators:

pip install punctuators

运行以下脚本将加载该模型并运行一些文本:

使用示例
from punctuators.models import PunctCapSegModelONNX

# Instantiate this model
# This will download the ONNX and SPE models. To clean up, delete this model from your HF cache directory.
m = PunctCapSegModelONNX.from_pretrained("pcs_47lang")

# Define some input texts to punctuate
input_texts: List[str] = [
    "hola mundo cómo estás estamos bajo el sol y hace mucho calor santa coloma abre los huertos urbanos a las escuelas de la ciudad",
    "hello friend how's it going it's snowing outside right now in connecticut a large storm is moving in",
    "未來疫苗將有望覆蓋3歲以上全年齡段美國與北約軍隊已全部撤離還有鐵路公路在內的各項基建的來源都將枯竭",
    "በባለፈው ሳምንት ኢትዮጵያ ከሶማሊያ 3 ሺህ ወታደሮቿንም እንዳስወጣች የሶማሊያው ዳልሳን ሬድዮ ዘግቦ ነበር ጸጥታ ሃይሉና ህዝቡ ተቀናጅቶ በመስራቱ በመዲናዋ ላይ የታቀደው የጥፋት ሴራ ከሽፏል",
    "all human beings are born free and equal in dignity and rights they are endowed with reason and conscience and should act towards one another in a spirit of brotherhood",
    "सभी मनुष्य जन्म से मर्यादा और अधिकारों में स्वतंत्र और समान होते हैं वे तर्क और विवेक से संपन्न हैं तथा उन्हें भ्रातृत्व की भावना से परस्पर के प्रति कार्य करना चाहिए",
    "wszyscy ludzie rodzą się wolni i równi pod względem swej godności i swych praw są oni obdarzeni rozumem i sumieniem i powinni postępować wobec innych w duchu braterstwa",
    "tous les êtres humains naissent libres et égaux en dignité et en droits ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité",
]
results: List[List[str]] = m.infer(input_texts)
for input_text, output_texts in zip(input_texts, results):
    print(f"Input: {input_text}")
    print(f"Outputs:")
    for text in output_texts:
        print(f"\t{text}")
    print()
预期输出
Input: hola mundo cómo estás estamos bajo el sol y hace mucho calor santa coloma abre los huertos urbanos a las escuelas de la ciudad
Outputs:
    Hola Mundo, ¿cómo estás?
    Estamos bajo el sol y hace mucho calor.
    Santa Coloma abre los huertos urbanos a las escuelas de la ciudad.

Input: hello friend how's it going it's snowing outside right now in connecticut a large storm is moving in
Outputs:
    Hello Friend, how's it going?
    It's snowing outside right now.
    In Connecticut, a large storm is moving in.

Input: 未來疫苗將有望覆蓋3歲以上全年齡段美國與北約軍隊已全部撤離還有鐵路公路在內的各項基建的來源都將枯竭
Outputs:
    未來,疫苗將有望覆蓋3歲以上全年齡段。
    美國與北約軍隊已全部撤離。
    還有鐵路公路在內的各項基建的來源都將枯竭。

Input: በባለፈው ሳምንት ኢትዮጵያ ከሶማሊያ 3 ሺህ ወታደሮቿንም እንዳስወጣች የሶማሊያው ዳልሳን ሬድዮ ዘግቦ ነበር ጸጥታ ሃይሉና ህዝቡ ተቀናጅቶ በመስራቱ በመዲናዋ ላይ የታቀደው የጥፋት ሴራ ከሽፏል
Outputs:
    በባለፈው ሳምንት ኢትዮጵያ ከሶማሊያ 3 ሺህ ወታደሮቿንም እንዳስወጣች የሶማሊያው ዳልሳን ሬድዮ ዘግቦ ነበር።
    ጸጥታ ሃይሉና ህዝቡ ተቀናጅቶ በመስራቱ በመዲናዋ ላይ የታቀደው የጥፋት ሴራ ከሽፏል።

Input: all human beings are born free and equal in dignity and rights they are endowed with reason and conscience and should act towards one another in a spirit of brotherhood
Outputs:
    All human beings are born free and equal in dignity and rights.
    They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.

Input: सभी मनुष्य जन्म से मर्यादा और अधिकारों में स्वतंत्र और समान होते हैं वे तर्क और विवेक से संपन्न हैं तथा उन्हें भ्रातृत्व की भावना से परस्पर के प्रति कार्य करना चाहिए
Outputs:
    सभी मनुष्य जन्म से मर्यादा और अधिकारों में स्वतंत्र और समान होते हैं।
    वे तर्क और विवेक से संपन्न हैं तथा उन्हें भ्रातृत्व की भावना से परस्पर के प्रति कार्य करना चाहिए।

Input: wszyscy ludzie rodzą się wolni i równi pod względem swej godności i swych praw są oni obdarzeni rozumem i sumieniem i powinni postępować wobec innych w duchu braterstwa
Outputs:
    Wszyscy ludzie rodzą się wolni i równi pod względem swej godności i swych praw.
    Są oni obdarzeni rozumem i sumieniem i powinni postępować wobec innych w duchu braterstwa.

Input: tous les êtres humains naissent libres et égaux en dignité et en droits ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité
Outputs:
    Tous les êtres humains naissent libres et égaux, en dignité et en droits.
    Ils sont doués de raison et de conscience et doivent agir les uns envers les autres.
    Dans un esprit de fraternité.

请注意,在此用法中,"Mundo"和"Friend"是专有名词,这就是为什么模型一致将类似的令牌大写的原因。

模型细节

此模型通常遵循下图所示的图形,并提供了每个步骤的简要描述。

  • 编码:模型首先使用子词分词器对文本进行分词。这里使用的分词器是一个包含64k个词汇大小的SentencePiece模型。接下来,将输入序列编码为具有512个模型维度的基础大小Transformer编码器,包含6层。

  • 后标点符号:然后,将编码的序列输入到分类网络中,预测“后”标点符号令牌。后标点符号是可能出现在单词之后的标点符号令牌,基本上是大多数常见标点符号。后标点符号每个子词预测一次-以下是进一步讨论。

  • 重新编码:所有后续任务(大小写转换、句子边界检测和“前”标点符号)都依赖于“后”标点符号。因此,我们必须将所有后续预测都条件化为后标点符号令牌。为此任务,预测的标点符号令牌被输入到嵌入层中,其中嵌入表示每个可能的标点符号令牌。每个时间步都被映射到一个4维嵌入,它与512维编码连接。连接的联合表示被重新编码,以使每个时间步都具有全局上下文,以将标点符号预测融入到后续任务中。

  • 前标点符号:在重新编码之后,另一个分类网络预测“前”标点符号,即可能出现在单词之前的标点符号令牌。实际上,这意味着西班牙语和阿斯图里亚斯语中的倒问号“¿”。请注意,“¿”只能出现在预测到“?”的情况下,因此有了相关性。

  • 句子边界检测:与“前”标点符号平行的是,另一个分类网络从重新编码的文本中预测句子边界。在所有语言中,只有在预测到潜在的句号时才会出现句子边界,因此有了相关性。

  • 移动和连接句子边界:在许多语言中,每个句子的第一个字符应该大写。因此,我们应该将句子边界信息提供给真实情况分类网络。由于真实情况分类网络是前馈的且没有上下文,因此每个时间步必须嵌入它是否是句子的第一个单词。因此,我们将二进制句子边界决策向右移动一位:如果标记N-1是句子边界,则标记N是句子的第一个单词。将其与重新编码的文本连接起来,每个时间步都包含了由SBD头预测的是否是句子的第一个单词。

  • 真实情况预测:在具备标点符号和句子边界的知识后,分类网络预测真实情况。由于真实情况应该基于每个字符进行,分类网络对每个标记进行N次预测,其中N是子词的长度(实际上,N是最长可能的子词,并且额外的预测被忽略)。此方案捕捉了首字母缩略词,例如"NATO",以及双大写单词,例如"MacDonald"。

  • 后标点符号令牌

    该模型在每个子词之后预测以下一组"后"标点符号令牌:

    Token Description Relevant Languages
    . Latin full stop Many
    , Latin comma Many
    ? Latin question mark Many
    Full-width question mark Chinese, Japanese
    Full-width comma Chinese, Japanese
    Full-width full stop Chinese, Japanese
    Ideographic comma Chinese, Japanese
    Middle dot Japanese
    Danda Hindi, Bengali, Oriya
    ؟ Arabic question mark Arabic
    ; Greek question mark Greek
    Ethiopic full stop Amharic
    Ethiopic comma Amharic
    Ethiopic question mark Amharic

    前标点符号令牌

    该模型在每个子词之前预测以下一组"前"标点符号令牌:

    Token Description Relevant Languages
    ¿ Inverted question mark Spanish

    训练细节

    此模型是在NeMo框架中训练的。

    训练数据

    此模型使用WMT的新闻抓取数据进行训练。

    使用了每种语言的100万行文本,除了一些低资源语言可能使用了更少的数据。语言的选择基于作者判断,新闻抓取语料库是否包含足够可靠的高质量数据。

    限制

    该模型是在新闻数据上训练的,对于会话或非正式数据可能表现不佳。

    该模型一次只预测一次标点符号每个子词。这意味着一些缩略语(例如'U.S.')可能无法正确标点。出于以下两个原因,该让步是被接受的:

  • 这样的缩略语很少见,特别是在多语言模型的上下文中
  • 标点符号的缩略词通常被单独地发音,例如'U.S.'与'NATO'这两个缩略词通常被发音为独立的字符。由于该模型的预处理取决于如何转录这种发音,因此预计这些缩略词会被转录为单独的标记,例如'u s'和 'us'(尽管这取决于模型的预处理过程)。
  • 此外,该模型可能不具备生产质量。由于每种语言仅训练了100万行,而且由于网络抓取的新闻数据的性质,开发集可能存在噪声。这也是一个具有多种语言和多种任务的基本规模的模型,因此可能容量有限。

    该模型的最大序列长度为128,对于NLP问题来说相对较短。

    在分析了该版本的限制之后,未来版本的模型将尝试改进以下几点:

  • 更长的最大长度
  • 更多的训练数据
  • 更多的训练步骤
  • 评估

    在这些指标中,请记住:

  • 数据中存在噪声
  • 句子边界和真实情况是以预测的标点符号为条件的,而预测的标点符号是最困难的任务,有时会出错。当基于参考标点符号进行条件化时,对于大多数语言,真实情况和SBD实际上达到了100%。
  • 标点符号可能是主观的。例如:
  • Hola mundo, ¿cómo estás?

    或者

    Hola mundo. ¿Cómo estás?

    当句子较长且更实际时,这些模棱两可的情况将很常见,并影响所有3个分析结果。

    测试数据和示例生成

    每个测试示例都是使用以下过程生成的:

  • 连接5个随机句子
  • 将拼接的句子转换为小写
  • 移除所有标点符号
  • 这些数据是来自News Crawl抓取数据的保留部分。每种语言使用了每种语言的2,000行数据,每行数据由5个句子构成。每个示例的最后4个句子是从这2,000个句子中随机抽取的,可能会有重复。

    超过模型最大长度的示例将被截断。可以从“句号”支持估计出受影响的句子数量:有2,000个句子和每个示例的5个句子,我们预计总共会有10,000个句号目标。

    选定语言的评估报告

    该模型很可能很快会进行更新,因此以下仅报告了少数语言。

    英语
    punct_post test report:
      label                                                precision    recall       f1           support
      <NULL> (label_id: 0)                                    98.71      98.66      98.68     156605
      . (label_id: 1)                                         87.72      88.85      88.28       8752
      , (label_id: 2)                                         68.06      67.81      67.93       5216
      ? (label_id: 3)                                         79.38      77.20      78.27        693
      ? (label_id: 4)                                          0.00       0.00       0.00          0
      , (label_id: 5)                                          0.00       0.00       0.00          0
      。 (label_id: 6)                                          0.00       0.00       0.00          0
      、 (label_id: 7)                                          0.00       0.00       0.00          0
      ・ (label_id: 8)                                          0.00       0.00       0.00          0
      । (label_id: 9)                                          0.00       0.00       0.00          0
      ؟ (label_id: 10)                                         0.00       0.00       0.00          0
      ، (label_id: 11)                                         0.00       0.00       0.00          0
      ; (label_id: 12)                                         0.00       0.00       0.00          0
      ። (label_id: 13)                                         0.00       0.00       0.00          0
      ፣ (label_id: 14)                                         0.00       0.00       0.00          0
      ፧ (label_id: 15)                                         0.00       0.00       0.00          0
      -------------------
      micro avg                                               97.13      97.13      97.13     171266
      macro avg                                               83.46      83.13      83.29     171266
      weighted avg                                            97.13      97.13      97.13     171266
    
    cap test report:
      label                                                precision    recall       f1           support
      LOWER (label_id: 0)                                     99.63      99.49      99.56     526612
      UPPER (label_id: 1)                                     89.19      91.84      90.50      24161
      -------------------
      micro avg                                               99.15      99.15      99.15     550773
      macro avg                                               94.41      95.66      95.03     550773
      weighted avg                                            99.17      99.15      99.16     550773
    
    seg test report:
      label                                                precision    recall       f1           support
      NOSTOP (label_id: 0)                                    99.37      99.42      99.39     162044
      FULLSTOP (label_id: 1)                                  89.75      88.84      89.29       9222
      -------------------
      micro avg                                               98.85      98.85      98.85     171266
      macro avg                                               94.56      94.13      94.34     171266
      weighted avg                                            98.85      98.85      98.85     171266
    
    西班牙语
     punct_pre test report:
      label                                                precision    recall       f1           support
      <NULL> (label_id: 0)                                    99.94      99.92      99.93     185535
      ¿ (label_id: 1)                                         55.01      64.86      59.53        296
      -------------------
      micro avg                                               99.86      99.86      99.86     185831
      macro avg                                               77.48      82.39      79.73     185831
      weighted avg                                            99.87      99.86      99.87     185831
    
    punct_post test report:
      label                                                precision    recall       f1           support
      <NULL> (label_id: 0)                                    98.74      98.86      98.80     170282
      . (label_id: 1)                                         90.07      89.58      89.82       9959
      , (label_id: 2)                                         68.33      67.00      67.66       5300
      ? (label_id: 3)                                         70.25      58.62      63.91        290
      ? (label_id: 4)                                          0.00       0.00       0.00          0
      , (label_id: 5)                                          0.00       0.00       0.00          0
      。 (label_id: 6)                                          0.00       0.00       0.00          0
      、 (label_id: 7)                                          0.00       0.00       0.00          0
      ・ (label_id: 8)                                          0.00       0.00       0.00          0
      । (label_id: 9)                                          0.00       0.00       0.00          0
      ؟ (label_id: 10)                                         0.00       0.00       0.00          0
      ، (label_id: 11)                                         0.00       0.00       0.00          0
      ; (label_id: 12)                                         0.00       0.00       0.00          0
      ። (label_id: 13)                                         0.00       0.00       0.00          0
      ፣ (label_id: 14)                                         0.00       0.00       0.00          0
      ፧ (label_id: 15)                                         0.00       0.00       0.00          0
      -------------------
      micro avg                                               97.39      97.39      97.39     185831
      macro avg                                               81.84      78.51      80.05     185831
      weighted avg                                            97.36      97.39      97.37     185831
    
    cap test report:
      label                                                precision    recall       f1           support
      LOWER (label_id: 0)                                     99.62      99.60      99.61     555041
      UPPER (label_id: 1)                                     90.60      91.06      90.83      23538
      -------------------
      micro avg                                               99.25      99.25      99.25     578579
      macro avg                                               95.11      95.33      95.22     578579
      weighted avg                                            99.25      99.25      99.25     578579
    
    [NeMo I 2023-02-22 17:24:04 punct_cap_seg_model:427] seg test report:
      label                                                precision    recall       f1           support
      NOSTOP (label_id: 0)                                    99.44      99.54      99.49     175908
      FULLSTOP (label_id: 1)                                  91.68      89.98      90.82       9923
      -------------------
      micro avg                                               99.03      99.03      99.03     185831
      macro avg                                               95.56      94.76      95.16     185831
      weighted avg                                            99.02      99.03      99.02     185831
    
    中文
    punct_post test report:
        label                                                precision    recall       f1           support
        <NULL> (label_id: 0)                                    98.82      97.34      98.07     147920
        . (label_id: 1)                                          0.00       0.00       0.00          0
        , (label_id: 2)                                          0.00       0.00       0.00          0
        ? (label_id: 3)                                          0.00       0.00       0.00          0
        ? (label_id: 4)                                         85.77      80.71      83.16        560
        , (label_id: 5)                                         59.88      78.02      67.75       6901
        。 (label_id: 6)                                         92.50      93.92      93.20      10988
        、 (label_id: 7)                                          0.00       0.00       0.00          0
        ・ (label_id: 8)                                          0.00       0.00       0.00          0
        । (label_id: 9)                                          0.00       0.00       0.00          0
        ؟ (label_id: 10)                                         0.00       0.00       0.00          0
        ، (label_id: 11)                                         0.00       0.00       0.00          0
        ; (label_id: 12)                                         0.00       0.00       0.00          0
        ። (label_id: 13)                                         0.00       0.00       0.00          0
        ፣ (label_id: 14)                                         0.00       0.00       0.00          0
        ፧ (label_id: 15)                                         0.00       0.00       0.00          0
        -------------------
        micro avg                                               96.25      96.25      96.25     166369
        macro avg                                               84.24      87.50      85.55     166369
        weighted avg                                            96.75      96.25      96.45     166369
    
    cap test report:
        label                                                precision    recall       f1           support
        LOWER (label_id: 0)                                     97.07      92.39      94.67        394
        UPPER (label_id: 1)                                     70.59      86.75      77.84         83
        -------------------
        micro avg                                               91.40      91.40      91.40        477
        macro avg                                               83.83      89.57      86.25        477
        weighted avg                                            92.46      91.40      91.74        477
    
    seg test report:
        label                                                precision    recall       f1           support
        NOSTOP (label_id: 0)                                    99.58      99.53      99.56     156369
        FULLSTOP (label_id: 1)                                  92.77      93.50      93.13      10000
        -------------------
        micro avg                                               99.17      99.17      99.17     166369
        macro avg                                               96.18      96.52      96.35     166369
        weighted avg                                            99.17      99.17      99.17     166369
    
    印地文
    punct_post test report:
        label                                                precision    recall       f1           support
        <NULL> (label_id: 0)                                    99.58      99.59      99.59     176743
        . (label_id: 1)                                          0.00       0.00       0.00          0
        , (label_id: 2)                                         68.32      65.23      66.74       1815
        ? (label_id: 3)                                         60.27      44.90      51.46         98
        ? (label_id: 4)                                          0.00       0.00       0.00          0
        , (label_id: 5)                                          0.00       0.00       0.00          0
        。 (label_id: 6)                                          0.00       0.00       0.00          0
        、 (label_id: 7)                                          0.00       0.00       0.00          0
        ・ (label_id: 8)                                          0.00       0.00       0.00          0
        । (label_id: 9)                                         96.45      97.43      96.94      10136
        ؟ (label_id: 10)                                         0.00       0.00       0.00          0
        ، (label_id: 11)                                         0.00       0.00       0.00          0
        ; (label_id: 12)                                         0.00       0.00       0.00          0
        ። (label_id: 13)                                         0.00       0.00       0.00          0
        ፣ (label_id: 14)                                         0.00       0.00       0.00          0
        ፧ (label_id: 15)                                         0.00       0.00       0.00          0
        -------------------
        micro avg                                               99.11      99.11      99.11     188792
        macro avg                                               81.16      76.79      78.68     188792
        weighted avg                                            99.10      99.11      99.10     188792
    
    cap test report:
        label                                                precision    recall       f1           support
        LOWER (label_id: 0)                                     98.25      95.06      96.63        708
        UPPER (label_id: 1)                                     89.46      96.12      92.67        309
        -------------------
        micro avg                                               95.38      95.38      95.38       1017
        macro avg                                               93.85      95.59      94.65       1017
        weighted avg                                            95.58      95.38      95.42       1017
    
    seg test report:
        label                                                precision    recall       f1           support
        NOSTOP (label_id: 0)                                    99.87      99.85      99.86     178892
        FULLSTOP (label_id: 1)                                  97.38      97.58      97.48       9900
        -------------------
        micro avg                                               99.74      99.74      99.74     188792
        macro avg                                               98.62      98.72      98.67     188792
        weighted avg                                            99.74      99.74      99.74     188792
    
    阿姆哈拉语
    punct_post test report:
        label                                                precision    recall       f1           support
        <NULL> (label_id: 0)                                    99.58      99.42      99.50     236298
        . (label_id: 1)                                          0.00       0.00       0.00          0
        , (label_id: 2)                                          0.00       0.00       0.00          0
        ? (label_id: 3)                                          0.00       0.00       0.00          0
        ? (label_id: 4)                                          0.00       0.00       0.00          0
        , (label_id: 5)                                          0.00       0.00       0.00          0
        。 (label_id: 6)                                          0.00       0.00       0.00          0
        、 (label_id: 7)                                          0.00       0.00       0.00          0
        ・ (label_id: 8)                                          0.00       0.00       0.00          0
        । (label_id: 9)                                          0.00       0.00       0.00          0
        ؟ (label_id: 10)                                         0.00       0.00       0.00          0
        ، (label_id: 11)                                         0.00       0.00       0.00          0
        ; (label_id: 12)                                         0.00       0.00       0.00          0
        ። (label_id: 13)                                        89.79      95.24      92.44       9169
        ፣ (label_id: 14)                                        66.85      56.58      61.29       1504
        ፧ (label_id: 15)                                        67.67      83.72      74.84        215
        -------------------
        micro avg                                               98.99      98.99      98.99     247186
        macro avg                                               80.97      83.74      82.02     247186
        weighted avg                                            98.99      98.99      98.98     247186
    
    cap test report:
        label                                                precision    recall       f1           support
        LOWER (label_id: 0)                                     96.65      99.78      98.19       1360
        UPPER (label_id: 1)                                     98.90      85.13      91.50        316
        -------------------
        micro avg                                               97.02      97.02      97.02       1676
        macro avg                                               97.77      92.45      94.84       1676
        weighted avg                                            97.08      97.02      96.93       1676
    
    seg test report:
        label                                                precision    recall       f1           support
        NOSTOP (label_id: 0)                                    99.85      99.74      99.80     239845
        FULLSTOP (label_id: 1)                                  91.72      95.25      93.45       7341
        -------------------
        micro avg                                               99.60      99.60      99.60     247186
        macro avg                                               95.79      97.49      96.62     247186
        weighted avg                                            99.61      99.60      99.61     247186