peina created LUCENE-7508:
-----------------------------

             Summary: [smartcn] tokens are not correctly created if text length 
> 1024
                 Key: LUCENE-7508
                 URL: https://issues.apache.org/jira/browse/LUCENE-7508
             Project: Lucene - Core
          Issue Type: Bug
          Components: modules/analysis
    Affects Versions: 6.2.1
         Environment: Mac OS X 10.10
            Reporter: peina


If text length is > 1024, HMMChineseTokenizer failed to split sentences 
correctly.

Test Sample:
public static void main(String[] args) throws IOException{
    Analyzer analyzer = new SmartChineseAnalyzer(); /* will load stopwords */
    //String sentence = 
"“七八个物管工作人员对我一个文弱书生拳打脚踢,我极力躲避时还被追打。”前天,微信网友爆料称,一名50多岁的江西教师在昆明被物管群殴,手指骨折,向网友求助。教师为何会被物管殴打?事情的真相又是如何?昨天,记者来到圣世一品小区,通过调查了解,事情的起因源于这名教师在小区里帮女儿散发汗蒸馆广告单,被物管保安发现后,引发冲突。对于群殴教师的说法,该小区物管保安队长称:“保安在追的过程中,确实有拉扯,但并没有殴打教师,至于手指骨折是他自己摔伤的。”爆料江西教师在昆明被物管殴打记者注意到,消息于8月27日发出,爆料者称,自己是江西宜丰崇文中学的一名中年教师黄敏。暑假期间来昆明的女儿家度假。他女儿在昆明与人合伙开了一家汗蒸馆,7月30日开业。8月9日下午6点30分许,他到昆明东二环圣世一品小区为女儿的汗蒸馆散发宣传小广告。小区物管前来制止,他就停止发放行为。黄敏称,小区物管保安人员要求他收回散发出去的广告单,他就去收了。物管要求他到办公室里去接受处理,他也配合了。让他没有想到的是,在处理的过程中,七八个年轻的物管人员突然对他拳打脚踢,他极力躲避时还被追着打,而且这一切,是在小区物管领导的注视下发生的。黄敏说,被打后,他立即报了警。除身上多处软组织挫伤外,伤得最严重的是右手大拇指粉碎性骨折,一掌骨骨折。他到云南省第三人民医院住了7天院,医生说无法手术,只能用夹板固定,也不吃药,待其自然修复,至少要3个月以上,右手大拇指还有可能伤残。为证明自己的说法,黄敏还拿出了官渡区公安分局菊花派出所出具的伤情鉴定委托书。他的伤情被鉴定为轻伤二级。说法帮女儿发宣传小广告教师在小区里被殴打昨日,记者者拨通了黄敏的电话。他说,当时他看见该小区的大门没有关,也没有保安值班。于是,他就进到了小区里帮女儿的汗蒸馆发广告单。在楼栋值班的保安没有阻止的前提下,他乘电梯来到了楼上,为了不影响住户,他将名片放在了房门的把手上。被保安发现时,他才发了四五十张。保安问他干什么?他回答,家里开了汗蒸馆,来宣传一下。两名保安叫他不要发了,并要求他到物管办公室等待领导处理。交谈中,由于对方一直在说方言,黄敏只能听清楚的一句话是,物管叫他去收回小广告。他当即同意了,准备去收。这时,小区的七八名工作人员就殴打了他,其中有穿保安服装的,也有身着便衣的。让他气愤的是,他试图逃跑躲起来,依然被追着殴打。黄敏说,女儿将他被打又维权无门的遭遇发到了微信上,希望找到相关视频和照片,还原事件真相。。";
    String sentence = 
"“七八个物管工作人员对我一个文弱书生拳打脚踢,我极力躲避时还被追打。”前天,微信网友爆料称,一名50多岁的江西教师在昆明被物管群殴,手指骨折,向网友求助。教师为何会被物管殴打?事情的真相又是如何?昨天,记者来到圣世一品小区,通过调查了解,事情的起因源于这名教师在小区里帮女儿散发汗蒸馆广告单,被物管保安发现后,引发冲突。对于群殴教师的说法,该小区物管保安队长称:“保安在追的过程中,确实有拉扯,但并没有殴打教师,至于手指骨折是他自己摔伤的。”爆料江西教师在昆明被物管殴打记者注意到,消息于8月27日发出,爆料者称,自己是江西宜丰崇文中学的一名中年教师黄敏。暑假期间来昆明的女儿家度假。他女儿在昆明与人合伙开了一家汗蒸馆,7月30日开业。8月9日下午6点30分许,他到昆明东二环圣世一品小区为女儿的汗蒸馆散发宣传小广告。小区物管前来制止,他就停止发放行为。黄敏称,小区物管保安人员要求他收回散发出去的广告单,他就去收了。物管要求他到办公室里去接受处理,他也配合了。让他没有想到的是,在处理的过程中,七八个年轻的物管人员突然对他拳打脚踢,他极力躲避时还被追着打,而且这一切,是在小区物管领导的注视下发生的。黄敏说,被打后,他立即报了警。除身上多处软组织挫伤外,伤得最严重的是右手大拇指粉碎性骨折,一掌骨骨折。他到云南省第三人民医院住了7天院,医生说无法手术,只能用夹板固定,也不吃药,待其自然修复,至少要3个月以上,右手大拇指还有可能伤残。为证明自己的说法,黄敏还拿出了官渡区公安分局菊花派出所出具的伤情鉴定委托书。他的伤情被鉴定为轻伤二级。说法帮女儿发宣传小广告教师在小区里被殴打昨日,��者拨通了黄敏的电话。他说,当时他看见该小区的大门没有关,也没有保安值班。于是,他就进到了小区里帮女儿的汗蒸馆发广告单。在楼栋值班的保安没有阻止的前提下,他乘电梯来到了楼上,为了不影响住户,他将名片放在了房门的把手上。被保安发现时,他才发了四五十张。保安问他干什么?他回答,家里开了汗蒸馆,来宣传一下。两名保安叫他不要发了,并要求他到物管办公室等待领导处理。交谈中,由于对方一直在说方言,黄敏只能听清楚的一句话是,物管叫他去收回小广告。他当即同意了,准备去收。这时,小区的七八名工作人员就殴打了他,其中有穿保安服装的,也有身着便衣的。让他气愤的是,他试图逃跑躲起来,依然被追着殴打。黄敏说,女儿将他被打又维权无门的遭遇发到了微信上,希望找到相关视频和照片,还原事件真相";

    System.out.println(sentence.length());
   // String sentence = "女儿将他被打又维权无门的遭遇发到了微信上,希望找到相关视频和照片,还原事件真相。";
    TokenStream tokens = analyzer.tokenStream("dummyfield", sentence);
    tokens.reset();
    CharTermAttribute termAttr = (CharTermAttribute) 
tokens.getAttribute(CharTermAttribute.class);
    while (tokens.incrementToken()) {
     // System.out.println(termAttr.toString());
    }
    
    analyzer.close();
  }

The text length in above sample is 1027, with this sample, the sentences are 
like this:
.....
Sentence:黄敏说,女儿将他被打又维权无门的遭遇发到了微信上,希望找到相关视频和照片,还原事
Sentence:件真相

The last 3 characters are detected as an individual sentence, so 还原事件真相 is 
tokenized as 还原|事|件|真相. when the correct tokens should be 还原|事件|真相。

Override isSafeEnd method in HMMChineseTokenizer fixes this issue by consider 
','  or '。'  as a safe end of text:

public class HMMChineseTokenizer extends SegmentingTokenizerBase {
....
 /** For sentence tokenization, these are the unambiguous break positions. */
  protected boolean isSafeEnd(char ch) {
    switch(ch) {
      case 0x000D:
      case 0x000A:
      case 0x0085:
      case 0x2028:
      case 0x2029:
   +   case '。':
   +   case ',':
        return true;
      default:
        return false;
    }
  }
  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to