mayabot / mynlp

一个生产级、高性能、模块化、可扩展的中文NLP工具包。(中文分词、平均感知机、fastText、拼音、新词发现、分词纠错、BM25、人名识别、命名实体、自定义词典)
https://mynlp.mayabot.com/
Apache License 2.0
675 stars 90 forks source link

分词器可能会将一些词前的空格和换行符划分到词中 #38

Open aether-ae opened 3 years ago

aether-ae commented 3 years ago

mynlp版本:3.3.0

Java复现方法:

static void test1(){
    Lexer lexer1 = Mynlp.instance().lexerBuilder().perceptron()
                    .withPersonName().keepOriCharOutput().withPos()
                    .withNer().withCustomDictionary().build();
    String testText1 = """
      公安局党委的安保维稳工作已进入了决战决胜时刻。
      公安局党委委员率治安支队、督察支队的相关同志一行来进行专项督察。
    督察组先后深入双峰县公安检查站,部分学校、宾馆、寄递物流、汽车站等重点行业与宣传发动等各项工作落实情况。
    公安局党委委员率治安支队、督察支队的相关同志一行来进行专项督察。
    """;
    lexer1.scan(testText1);
}

结果:

[  公安局党委/nt][的/u][安保/j][维稳/nr][工作/vn][已/d][进入/v][了/u][决战/v][决胜/v][时刻/d][。/w][
  公安局党委/nt][委员/n][率/k][治安/n][支队/n][、/w][督察/v][支队/n][的/u][相关/nr][同志/n][一行/mq][来/u][进行/v][专项/b][督察/n][。/w][
督察/v][组/n][先后/d][深入/a][双峰县/ns][公安/n][检查站/n][,/w][部分/n][学校/n][、/w][宾馆/n][、/w][寄递/vn][物流/n][、/w][汽车站/n][等/u][重点/n][行业/n][与/c][宣传/v][发动/v][等/u][各项/r][工作/vn][落实/v][情况/n][。/w][
公安局党委/nt][委员/n][率/k][治安/n][支队/n][、/w][督察/v][支队/n][的/u][相关/nr][同志/n][一行/mq][来/u][进行/v][专项/b][督察/n][。/w]

注意到词[  公安局党委/nt]携带了前面的2个空格(第二个携带了一个换行符), 第三行的第一个词[督察/v]携带了一个换行符。 在分词器不使用.withNer()时,词[  公安局党委/nt]不会携带空格或换行符,但词[督察/v]依然会携带一个换行符。