测试第9章关键短语提取时发现SafeJClass可能存在问题

大家好,我在仿照书中9.3节做关键短语提取,我试图换分词器来测试效果,最开始用SafeJClass,两个分词器得到的结果完全一样,甚是疑惑。该用JClass就不一样了。所以很怀疑SafeJClass是不是有点bug???

相关代码如下:
from pyhanlp import SafeJClass, HanLP, JClass

HanLP.Config.ShowTermNature = False

text = “算法工程师\n” +
“算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n” +
“\n” +
“1职位简介\n” +
“算法工程师是一个非常高端的职位;\n” +
“专业要求:计算机、电子、通信、数学等相关专业;\n” +
“学历要求:本科及其以上的学历,大多数是硕士学历及其以上;\n” +
“语言要求:英语要求是熟练,基本上能阅读国外专业书刊;\n” +
“必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。\n” +
“\n” +
“2研究方向\n” +
“视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师\n” +
“\n” +
“3目前国内外状况\n” +
“目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。\n” +
“在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。\n” +
“在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。\n” +
“另外数据挖掘、互联网搜索算法也成为当今的热门方向。\n” +
“算法工程师逐渐往人工智能方向发展。”

phrase_list = HanLP.extractPhrase(text, 5)
print(phrase_list)

NotionalTokenizer = SafeJClass(“com.hankcs.hanlp.tokenizer.NotionalTokenizer”)
notionaltokenizer = NotionalTokenizer()
notionaltokenizer.SEGMENT = HanLP.newSegment(‘perceptron’)

MutualInformationEntropyPhraseExtractor = SafeJClass(“com.hankcs.hanlp.mining.phrase.MutualInformationEntropyPhraseExtractor”)
extractor = MutualInformationEntropyPhraseExtractor()

print(extractor.extractPhrase(text, 5))

SafeJClass是个代理,notionaltokenizer.SEGMENT访问的是代理的成员而不是被代理者的成员。这种情况读读源码就知道了。

谢谢hankcs老师。还想追问一下,
(1)该看哪部分的源码?能否指点一下在哪里?谢谢~
(2)是不是用JClass是正确的?

link

是的

OK,谢谢hankcs老师