mindspore.dataset.text.JiebaTokenizer

class mindspore.dataset.text.JiebaTokenizer(hmm_path, mp_path, mode=JiebaMode.MIX, with_offsets=False)[源代码]

使用Jieba分词器对中文字符串进行分词。

Note

必须保证隐式马尔科夫模型分词(HMMSEgment)和最大概率法分词(MPSegment)所使用的词典文件的完整性。

参数:
  • hmm_path (str) - 隐式马尔科夫模型分词算法使用的词典文件路径,词典可在cppjieba官网获取, 详见 cppjieba_github

  • mp_path (str) - 最大概率法分词算法使用的词典文件路径,词典可在cppjieba官网获取, 详见 cppjieba_github

  • mode (JiebaMode, 可选) - Jieba分词使用的模式,可以取值为JiebaMode.MP、JiebaMode.HMM或JiebaMode.MIX。默认值:JiebaMode.MIX。

    • JiebaMode.MP:使用最大概率法算法进行分词。

    • JiebaMode.HMM:使用隐马尔可夫模型算法进行分词。

    • JiebaMode.MIX:使用隐式马尔科夫模型分词算法和最大概率法分词算法混合进行分词。

  • with_offsets (bool, 可选) - 是否输出标记(token)的偏移量,默认值:False。

异常:
  • ValueError - 没有提供参数 hmm_path 或为None。

  • ValueError - 没有提供参数 mp_path 或为None。

  • TypeError - 参数 hmm_pathmp_path 类型不为str。

  • TypeError - 参数 with_offsets 类型不为bool。

支持平台:

CPU

样例:

>>> from mindspore.dataset.text import JiebaMode
>>> # If with_offsets=False, default output one column {["text", dtype=str]}
>>> jieba_hmm_file = "/path/to/jieba/hmm/file"
>>> jieba_mp_file = "/path/to/jieba/mp/file"
>>> tokenizer_op = text.JiebaTokenizer(jieba_hmm_file, jieba_mp_file, mode=JiebaMode.MP, with_offsets=False)
>>> text_file_dataset = text_file_dataset.map(operations=tokenizer_op)
>>> # If with_offsets=False, then output three columns {["token", dtype=str], ["offsets_start", dtype=uint32],
>>> #                                                   ["offsets_limit", dtype=uint32]}
>>> tokenizer_op = text.JiebaTokenizer(jieba_hmm_file, jieba_mp_file, mode=JiebaMode.MP, with_offsets=True)
>>> text_file_dataset_1 = text_file_dataset_1.map(operations=tokenizer_op, input_columns=["text"],
...                                               output_columns=["token", "offsets_start", "offsets_limit"],
...                                               column_order=["token", "offsets_start", "offsets_limit"])
add_dict(user_dict)[源代码]

将用户定义的词添加到 JiebaTokenizer 的字典中。

参数:
  • user_dict (Union[str, dict]) - 有两种输入方式。可以通过指定jieba字典格式的文件路径加载。 要求的jieba字典格式为:[word,freq],如:

    word1 freq1
    word2 None
    word3 freq3
    

    在提供的jieba字典文件中,只有有效的词对才会被添加到字典中,无效的输入行将被忽略,且不返回错误或警告状态。 同时用户也可以通过Python dict定义要添加的词汇,要求的Python字典格式为:{word1:freq1, word2:freq2,…}。

样例:

>>> from mindspore.dataset.text import JiebaMode
>>> jieba_hmm_file = "/path/to/jieba/hmm/file"
>>> jieba_mp_file = "/path/to/jieba/mp/file"
>>> user_dict = {"男默女泪": 10}
>>> jieba_op = text.JiebaTokenizer(jieba_hmm_file, jieba_mp_file, mode=JiebaMode.MP)
>>> jieba_op.add_dict(user_dict)
>>> text_file_dataset = text_file_dataset.map(operations=jieba_op, input_columns=["text"])
add_word(word, freq=None)[源代码]

将用户定义的词添加到 JiebaTokenizer 的字典中。

参数:
  • word (str) - 要添加到 JiebaTokenizer 词典中的单词,注意通过此接口添加的单词不会被写入本地的模型文件中。

  • freq (int,可选) - 要添加的单词的频率。频率越高,单词被分词的机会越大。默认值:None,使用默认频率。

样例:

>>> from mindspore.dataset.text import JiebaMode
>>> jieba_hmm_file = "/path/to/jieba/hmm/file"
>>> jieba_mp_file = "/path/to/jieba/mp/file"
>>> jieba_op = text.JiebaTokenizer(jieba_hmm_file, jieba_mp_file, mode=JiebaMode.MP)
>>> sentence_piece_vocab_file = "/path/to/sentence/piece/vocab/file"
>>> with open(sentence_piece_vocab_file, 'r') as f:
...     for line in f:
...         word = line.split(',')[0]
...         jieba_op.add_word(word)
>>> text_file_dataset = text_file_dataset.map(operations=jieba_op, input_columns=["text"])