fxsjy / jieba Goto Github PK
View Code? Open in Web Editor NEW结巴中文分词
License: MIT License
结巴中文分词
License: MIT License
看了一下结果,感觉挺好的,想研究一下整个过程,能否提供一个简单的文档说明,代码都没有注释,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')
我不知道您是否打包过使用了结巴的程序,如果有,您遇到过这样的问题吗?
或者您知道问题可能出现在哪吗?
谢谢啦~
我使用UTF-8编码的文本保存来网页的复制内容,用list(jieba.cut(text))分词后输出发现,开始处有不明字节“\ufeff”存在,如['\ufeff', '上有老']
如下:
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”这种中间带空格的关键词
请问jieba分词有提供关键词词典吗?(用来获取该关键词的同义词)谢谢!
该句“女性用户更容易八卦得到处说你不好”对'到处'的分词有问题,给分成‘处说’一词了
使用环境python 3.3,jieba.cut(test_sent)函数下测试
如题,谢谢,作者是否考虑过内存使用量的问题。
jieba 可以添加新词吗?
我看到词库里面每个词后面都有一个数字,不知是什么意思,添加新词,是否需要注意顺序。 我想要添>> 加一些更长的专有名词,如何能够让jieba优先按照长词切割。
比如 “模型设计师” ,当加入了这个新词之后,作为整体切割,而非割为 “模型” 和 “设计师” 两个词。
Re:
那个数字是我的语料中词语出现的次数。
如果你要添加新词,直接在dict.txt后面添加一行就行了,数字可以写一个较小的整数就行了,比如3。
大工程啊 现在没有好用的中文引擎
请问如何结合jieba和搜狗的词库,谢谢!
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
请问,你知道我怎么能用结巴来分词繁体句子?目前这样的句子:
你還記得你上過紐約客的封面嗎?
就有这样的分词:
你, 還, 記, 得, 你, 上, 過, 紐, 約, 客, 的, 封面, 嗎
(当然不对)但如果先换到简体分词它给对的答案。所以第一个办法是用我自己提供的繁体词典,但在哪里会找到这样的词典?第二个办法是先翻到简体,然后再一次翻到繁体,但这个办法也是容易出错的。有别的观念吗?
建议使用 BSD license,Apache License 或者 MIT license
还有需不需要提交词库的更新?
不归路
张三风同学
建议提供 debug 选项控制类似下面这样的输出
print >> sys.stderr, f_name, ' at line', lineno, line
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?
'function' object has no attribute 'cut'
Request Method: GET
Request URL: http://link.drips.me/jieba/asdf/
Django Version: 1.5.1
Exception Type: AttributeError
Exception Value:
'function' object has no attribute 'cut'
Exception Location: /home/jason/link/base/views.py in jieba, line 34
Python Executable: /usr/local/bin/uwsgi
Python Version: 2.7.3
哪位大牛能教教我,谢谢
e.g
江西德兴幼儿园唱红歌迎十八大
江西/ns 德兴/ns 幼儿园/nr 唱/v 红歌/x 迎/v 十八大/x
自定义词典中的被识别为x,其实应该是n。
十八大 5 x
的形式;语料中有网址的话,会分出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#的Main代码为:
static void Main()
{
var ipy = Python.CreateRuntime();
dynamic test = ipy.UseFile("Test2.py");
test.Simple();
// test.NonexistentMethod();
Console.ReadLine();
}
然后:Test2.py文件内容为:
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==
import sys
import jieba
jieba.load_userdict("user.dict")
print ", ".join(jieba.cut("大连美容美发学校中君意是你值得信赖的选择"))
==结果===
大连, 美容美发, 学校, 中, 君意, 是, 你, 值得, 信赖, 的, 选择
最近研究 中文分词,准备自己做一个,采用双向匹配分词和HMM处理未登录词、削歧义。
不过看了jieba,感觉细节已经做了很多。
准备实现 whoosh 的分词接口,就用在下一个项目中。
不知道能不能提供些 jieba设计方面的资料
你好,我最近在看结巴分词的算法,看到在判断切分组合的时候,利用的是动态规划来求出最大组合概率,我觉得这个方法挺好。
不过,我有一个想法,不知道这样想对不对,还请指教。
我是这样想的,因为之前已经形成了切分词图,我在想可不可以利用图论里的最短路径的相关算法来做判断。但是最短路径求得是权值最短,如果把概率作为权值的话,这样直接算就算的是最小概率了。之前我看到过一篇论文有提出一个解决这种问题的办法,利用最短路径算法来求最大权值。
需要对权值做一定的转换。设边的权值为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是非负数
所以可以通过求最短路径的方法来得到最大组合概率。
例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类型,即名词,但是走posseg分出来,还是被拆开了韩玉 nr,赏鉴 v,是不是分析词库和分词走得不是一个自定义词库?
现在cut方法有了词性标注,但cut_for_search方法好像没有词性标注。我现在在用Jieba做搜索引擎,想要个词性标注,以便获取不同的词性,不知道能否添加上?另外,能否有份关于词性说明的文档,即说明每个词性符号代表着哪种词性?
本人可以参与。。。。。
試用了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中 沒有用
謝謝
(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
的
正则表达式
是
好
用
的
分词的结果很不理想, 有如下问题:
我测试用的是最新的稳定版本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
建议给一个setup.py, 就像其他标准的python类库那样 :)
提取的内容,方便排除部分标点,英文和数字么,需要调整一下吗?
就是finalseg/prob_*.py中的这些数据
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剔除掉,有没有什么选项?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.