Git Product home page Git Product logo

jieba's People

Contributors

aholic avatar anderscui avatar changyy avatar cloudaice avatar davidlihm avatar fukuball avatar fxsjy avatar gumblex avatar hermanschaaf avatar jagt avatar jerryday avatar jesseyxujin avatar keroro520 avatar mno2 avatar neutrino3316 avatar nomaka avatar ooczc avatar piaolingxue avatar qinwf avatar shurachow avatar sing1ee avatar timgates42 avatar vissssa avatar walkskyer avatar wangbin avatar xyzhou-puck avatar yanyiwu avatar zhengzixiang avatar zheplusplus avatar zoeyyoung avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jieba's Issues

能提供简单的说明文档吗?

看了一下结果,感觉挺好的,想研究一下整个过程,能否提供一个简单的文档说明,代码都没有注释,python菜鸟请教。

你好~ 在打包程序的时候出现了问题

你好我在我的一个小项目里使用了结巴分词,首先对您的努力表示感谢

我在使用py2exe打包我的程序的时候,其他的模块都没有出现问题,打包能够成功,但在运行的时候一直显示

IOError: [Errno 2] No such file or directory: 'E:\python\links\romeo\dist\l
ibrary.zip\jieba\finalseg\prob_start.py'

我单独写了一个.py文件,只有一句话:
import jieba
seg=jieba.cut('hello jieba')

打包,但运行的时候也是上面的那个结果。
image

我不知道您是否打包过使用了结巴的程序,如果有,您遇到过这样的问题吗?
或者您知道问题可能出现在哪吗?
谢谢啦~

分词结果中出现不明字节

我使用UTF-8编码的文本保存来网页的复制内容,用list(jieba.cut(text))分词后输出发现,开始处有不明字节“\ufeff”存在,如['\ufeff', '上有老']

jieba3k 启动报错

如下:

import jieba
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3.3/site-packages/jieba/init.py", line 152
re_han, re_skip = re.compile(ur"([\u4E00-\u9FA5]+)"), re.compile(ur"[^a-zA-Z0-9+#\n]")
^
SyntaxError: invalid syntax
import sys
sys.version
'3.3.0 (default, Dec 12 2012, 07:38:12) \n[GCC 4.7.2]'

用户字典

如何解决向字典添加“leap motion”这种中间带空格的关键词

错误分词案例提交

该句“女性用户更容易八卦得到处说你不好”对'到处'的分词有问题,给分成‘处说’一词了
使用环境python 3.3,jieba.cut(test_sent)函数下测试

jieba分词库添加新词的问题

jieba 可以添加新词吗?
我看到词库里面每个词后面都有一个数字,不知是什么意思,添加新词,是否需要注意顺序。 我想要添>> 加一些更长的专有名词,如何能够让jieba优先按照长词切割。
比如 “模型设计师” ,当加入了这个新词之后,作为整体切割,而非割为 “模型” 和 “设计师” 两个词。

Re:

那个数字是我的语料中词语出现的次数。
如果你要添加新词,直接在dict.txt后面添加一行就行了,数字可以写一个较小的整数就行了,比如3。

pip 安装失败

WindowsServer2008 python3.3下使用pip install jieba安装失败
错误提示

      File "D:\Python33\Lib\site-packages\jieba\finalseg\__init__.py", line 62
        re_han, re_skip = re.compile(ur"([\u4E00-\u9FA5]+)"), re.compile(ur"([\.
0-9]+|[a-zA-Z0-9]+)")
                                                          ^
    SyntaxError: invalid syntax

      File "D:\Python33\Lib\site-packages\jieba\posseg\__init__.py", line 68
        re_han, re_skip = re.compile(ur"([\u4E00-\u9FA5]+)"), re.compile(ur"([\.
0-9]+|[a-zA-Z0-9]+)")
                                                          ^
    SyntaxError: invalid syntax

      File "D:\Python33\Lib\site-packages\jieba\__init__.py", line 42
        except ValueError, e:
                         ^
    SyntaxError: invalid syntax

繁体自定义词典

请问,你知道我怎么能用结巴来分词繁体句子?目前这样的句子:

你還記得你上過紐約客的封面嗎? 

就有这样的分词:

你, 還, 記, 得, 你, 上, 過, 紐, 約, 客, 的, 封面, 嗎

(当然不对)但如果先换到简体分词它给对的答案。所以第一个办法是用我自己提供的繁体词典,但在哪里会找到这样的词典?第二个办法是先翻到简体,然后再一次翻到繁体,但这个办法也是容易出错的。有别的观念吗?

提供选项控制输出

建议提供 debug 选项控制类似下面这样的输出

print >> sys.stderr, f_name, ' at line', lineno, line

/tmp/jieba.cache prevents multiple users from running jieba

If two users run jieba at the same time, the first user will own /tmp/jieba.cache and the second user will get permission denied. Can we have a way to specify this location in a configuration file so we don't have to hack the global temp file location for each user?

自定义词典文件中的新增词词性被识别为x

e.g

江西德兴幼儿园唱红歌迎十八大

江西/ns 德兴/ns 幼儿园/nr 唱/v 红歌/x 迎/v 十八大/x

自定义词典中的被识别为x,其实应该是n。

  1. 自定义字典中可否加入词性?例如 十八大 5 x的形式;
  2. 如果不行,可以自己编辑原字典吗?(我用vi直接编辑字典dict.txt会导致无法使用)。

网址、英文、数字和中文混合的语料,网站和英文也分词

语料中有网址的话,会分出http这样的词,而实际上这个是网址,如果网址中包含数字字母的随机数,也会分出来。
http://t.cn/zjARTkg
[u'http', u't', u'cn', u'zjARTkg']
https://github.com/fxsjy/jieba/issues/new
[u'https', u'github', u'com', u'fxsjy', u'jieba', u'issues', u'new']
我不清楚这个是不是应该我在给jieba原始语料中就应该去掉URL,还是应该包含在模块中

C#+Ironphthon运行结巴出错

C#的Main代码为:

static void Main()
{
    var ipy = Python.CreateRuntime();
    dynamic test = ipy.UseFile("Test2.py");
    test.Simple();
    // test.NonexistentMethod();
    Console.ReadLine();
}

然后:Test2.py文件内容为:

encoding=utf-8

import sys
import jieba

def Simple():
seg_list = jieba.cut_for_search("测试一下这个东西的效果是如何的!") #搜索引擎模式
print ", ".join(seg_list)

然后用IronPython出现错误。No module named future

导入自定义库的时候报错

win7的系统,python 2.7

Building Trie...
loading model from cache
loading model cost 1.007999897 seconds.
Trie has been built succesfully.
Traceback (most recent call last):
File "D:\work\eclipse\workshop\python_try\src\hotkey.py", line 10, in
jieba.load_userdict("userdict.txt")
File "C:\Python27\lib\site-packages\jieba__init__.py", line 196, in load_userdict
content = f.read().decode('utf-8')
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd4 in position 0: invalid continuation byte

通过用户自定义词典来增强歧义纠错能力

你好,最近在用你的分词,发现
大连 美容美发 学校 中君 意是 你 值得 信赖 的 选择

这句话被错误地切分了,我查看了dict.txt和idf.txt都没有找到“中君”和“意是”这两个词,不知道为什么>>会有这样的错分呢?

能不能从理论上解释一下?

RE:

"大连美容美发学校中君意是你值得信赖的选择" 这句话首先会按照概率连乘最大路径来切割,因为单字有一定概率,而“中君意是”这四个字中不含词典中有的词,所以会被切割成单字:

即:大连/ 美容美发/ 学校/ 中/ 君/ 意/ 是/ 你/ 值得/ 信赖/ 的/ 选择/

然后我们认为“中/ 君/ 意/ 是/ 你/ ”这几个连续的单字 中可能有词典中没有的新词,所以再用finalseg来切一遍“中君意是你 ”,finalseg是通过HMM模型来做的,简单来说就是给单字大上B,M,E,S四种标签以使得概率最大。

很遗憾,由于训练数据的问题,finalseg最终得到的标签是:

中君 意是 你
B E B E S

即认为P(B)_P(中|B)_P(E|B)_P(君|E)_P(B|E)_P(意|B)_P(E|B)_P(是|E)_P(S|E)*P(你|S) 是所有可能的标签组合中概率最大的。

B: 开头
E:结尾
M:中间
S: 独立成词的单字

解决方案是在词典中补充“君意”这个词,并给予一个词频,不用太大,比如3即可。

==user.dict===

君意 3

==test.py==

encoding=utf-8

import sys
import jieba
jieba.load_userdict("user.dict")
print ", ".join(jieba.cut("大连美容美发学校中君意是你值得信赖的选择"))

==结果===
大连, 美容美发, 学校, 中, 君意, 是, 你, 值得, 信赖, 的, 选择

添加对 whoosh 的接口

最近研究 中文分词,准备自己做一个,采用双向匹配分词和HMM处理未登录词、削歧义。
不过看了jieba,感觉细节已经做了很多。
准备实现 whoosh 的分词接口,就用在下一个项目中。
不知道能不能提供些 jieba设计方面的资料

关于jieba的分词效果

首先感谢 @fxsjy 做了这个项目。
请问 @fxsjy ,jieba分词的效果如何呢,跟ICTCLASS相比呢?我是说是否做过相关的评测。
我测试了一些句子,感觉效果还可以。

关于利用动态规划求解最大概率路径

你好,我最近在看结巴分词的算法,看到在判断切分组合的时候,利用的是动态规划来求出最大组合概率,我觉得这个方法挺好。

不过,我有一个想法,不知道这样想对不对,还请指教。

我是这样想的,因为之前已经形成了切分词图,我在想可不可以利用图论里的最短路径的相关算法来做判断。但是最短路径求得是权值最短,如果把概率作为权值的话,这样直接算就算的是最小概率了。之前我看到过一篇论文有提出一个解决这种问题的办法,利用最短路径算法来求最大权值。

需要对权值做一定的转换。设边的权值为f(也就是词的频率或概率),取f的自然底数的对数的相反数,-ln(f),作为新的权值w,即w=-ln(f),利用这个权值w来求最短路径。

可以看出:
1,f越大,w越小
2,min(w1+w2+w3+...+wi)对应的是max(ln(f1_f2_f3_...fi)),也就是说求出有新权值w的图的最短路径后,相应的那个路径的组合概率 P=f1_f2_f3..._fi 是最大的,也就是我们要找的
3,由于f本来就是概率,所以0<f<1,因此w是非负数

所以可以通过求最短路径的方法来得到最大组合概率。

关于posseg词性的自定义词库的问题

例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类型,即名词,但是走posseg分出来,还是被拆开了韩玉 nr,赏鉴 v,是不是分析词库和分词走得不是一个自定义词库?

能否为cut_for_search方法添加上词性标注?

现在cut方法有了词性标注,但cut_for_search方法好像没有词性标注。我现在在用Jieba做搜索引擎,想要个词性标注,以便获取不同的词性,不知道能否添加上?另外,能否有份关于词性说明的文档,即说明每个词性符号代表着哪种词性?

你好, 分詞後的output編碼會改變?

試用了jieba兩個星期 發現它真的很好用 感謝你的分享

但我這邊發現到一個問題 有些字 (我這裡都是以繁體字為主 , UTF-8)
分詞後的output編碼會改變

例如
INPUT: 隱形飛機 (str encode)

dd = "隱形飛機"
dd = '\xef\xbb\xbf\xe9\x9a\xb1\xe5\xbd\xa2\xe9\xa3\x9b\xe6\xa9\x9f'
segString = pseg.cut(dd)

segString的內容會變成

'\xe9\x9a\xb1\xe5\xbd\xa2'
'\xe9\xa3\x9b\xe6\xa9\x9f'

其中"隱形"前三碼xef\xbb\xbf 不見了

請問這有辦法修正嗎? 有試者改過將big5的"隱形" 貼到 dic.txt中 沒有用

謝謝

viterbi算法的代码是不是有错误?

(prob,state ) = max([(V[t-1][y0] * trans_p[y0].get(y,0) * emit_p[y].get(obs[t],0) ,y0) for y0 in states ])

这个语句,我觉得state应该根据max(V[t-1][y0] * trans_p[y0].get(y,0))取值,而不是 max(V[t-1][y0] * trans_p[y0].get(y,0) * emit_p[y].get(obs[t],0)),不知道对不对

包含符号的字符串的切分结果很奇怪

例如:
“我+你-他_我们/他们” --> “我/ +/ 你/ 他/ 我们/ 他们/ ”
“1+2-3_4/5” --> “1+2/ 3/ 4/ 5/ ”

只有加号保留下来了,其余的符号都去掉了,不知道是不是有意这么设计的?

最新稳定版本测试问题

用户自定义词典中的内容如下:

easy_install 99999999
正则表达式 999999

如下测试代码:

#coding=utf-8


import jieba
__author__ = 'yukaizhao'


if __name__ == '__main__':
    jieba.load_userdict(r'E:\outofmemory\search\dict.txt')
    terms = jieba.cut('easy_install is great')
    for t in terms:
        print t
    print '-------------------------'
    terms = jieba.cut('python 的正则表达式是好用的')
    for t in terms:
        print t

以上代码执行的结果:

easy
_
install

is

great
-------------------------
python

的
正则表达式
是
好
用
的

分词的结果很不理想, 有如下问题:

  1. easy_install 在自定义词典中定义了非常高的权重,但是依然被拆开了
  2. 英文半角的空格也会当作一个词切出来了
  3. 第二个句子“python 的正则表达式是好用的”,这里的“是好用的”切成了单字

我测试用的是最新的稳定版本0.26.1.

感谢作者的开源精神

分词后空格丢失

如“回复 踩1,顶19 ”经分词后,print("/".join(results))输出为“/回复/踩/1/,/顶/19”,‘回复’后面的两个空格被trim掉了,这相当于修改了原文的结构,建议修正。

你好~ 我在论文中简要引用这个项目

你好~
我是之前询问你有关于打包之后不成功的那个人
我正在写我的本科毕业论文,然后我可能需要在论文中提到jieba
全文大概如下:

”jieba(结巴分词)是托管在GitHub上的一个由fxsjy开发维护的中文分词组件,使用了双Trie树、动态规划以及HMM模型,是使用Python开发的效果最好的中文分词组件“

现在在这里征求您的同意~
再次对您表示感谢~

内存占用

使用 easy_install 安装的最新版,import jieba 之后在我的 Ubuntu 12.04 x64 512M VPS 上占用了 52.5% 的内存,这样的占用率会否太高了?或者是系统方面的问题?

谢谢

请问这个库的授权

是GPL GPLv3 MIT 还是其他协议?
希望能指出, 谢谢!

此外如果dict.txt的来源有不同授权, 也希望能指出.

连续的小概率乘法可能会导致浮点下溢

一般这种问题都会用log(p1)+log(p2)来代替p1*p2,但是这样要求概率不能为0。

源代码里看不到你是如何统计概率的,但是对于HMM,没记错的话分母应该是所有词的词频总和,分子应该是特定词的词频,如果要避免0概率,可以在分母上加上所有词的个数,分子加1,将求得的概率取对数放在prob_*.py里,然后在程序中把所有的乘法变成加法就好了。

代码风格能改成空格缩进么?

你好,我把代码拿下来看时,发现所有的缩进都是使用的TAB。

当然,这不影响代码的正常运行。

但是,我觉得现在大多数人使用的都是空格,于是当有人想对这个项目作 pull request 的时候会不会比较不方便?

处理词典时的建议

你好。

在 /jieda/init.py 的 gen_trie(f_name) 函数中,目前只是简单地读出所有文件内容,然后以 \n 切分,然后再对每一行切片。

这样会有一个问题,当碰到一个空行时,程序就会出错(split(' ') 之后的三个变量赋值会不匹配),并且,这个错误处理起来还比较麻烦(事实上我改了一下默认的字典文件后就出错了,我也找不出字典哪里有问题)。

我建议是不是对空行处理一下,比如:

def gen_trie(f_name):
    lfreq = {}
    trie = {}
    ltotal = 0.0

    with open(f_name, 'rb') as f:
        for l in f:
            l = l.decode('utf-8').strip()
            if not l:
                continue
            word, freq, _ = l.split(' ')
            freq = float(freq)
            lfreq[word] = freq
            ltotal+=freq
            p = trie
            for c in word:
                if not c in p:
                    p[c] ={}
                p = p[c]
            p['']='' #ending flag

    return trie, lfreq,ltotal

ictclas 词性标注在哪里可以看到?

word_flag是具体什么意思?

m
i
l
d
s
t
nr
n
mq
j
a
nz
r
b
f
nrt
v
z
ns
q
vn
c
nt
u
o
zg
nrfg
df
p
g
y
ad
vg
ng
x
ul
k
ag
dg
rr
rg
an
vq
e
uv
tg
mg
ud
vi
vd
uj
uz
h
ug
rz

关键词提取质量很差

使用jieba提取readme内容中的关键词,返回的结果是:
jieba,the,cut,to,list

这个结果中是否可以将the,to剔除掉,有没有什么选项?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.