在土耳其语tex中使用nltk查找ngram

2024-10-03 15:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个有unicode字符的土耳其文本中找到ngrams。这是我的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import nltk
from nltk import word_tokenize
from nltk.util import ngrams

def find_bigrams():
    t = "çağlar boyunca geldik çağlar aktı gitti. çağlar aktı"
    token = nltk.word_tokenize(t)
    bigrams = ngrams(token,2)
    for i in bigrams:
        print i

find_bigrams()

输出:

^{pr2}$

当我这样修改文本时:

t = "çağlar boyunca geldik çağlar aktı gitti"

输出也会发生变化:

('\xc3\xa7a\xc4\x9flar', 'boyunca')
('boyunca', 'geldik')
('geldik', '\xc3\xa7a\xc4\x9flar')
('\xc3\xa7a\xc4\x9flar', 'akt\xc4\xb1')
('akt\xc4\xb1', 'gitti')

如何解决这个unicode问题?另一个问题是如何将这些标记转换为字符串(不带')字符)


Tags: importunicode字符nltkxc4ngramsbigramsxc3
1条回答
网友
1楼 · 发布于 2024-10-03 15:28:32

这与其说是NLTK问题,不如说是unicode问题。在

这可以通过添加来自__future__的正确导入来解决;在本例中,您需要unicode_literals。在

请注意我的Mac安装的Python 2.7.10中的以下示例:

>>> from __future__ import unicode_literals
>>> t = "çağlar boyunca geldik çağlar aktı gitti. çağlar aktı"
>>> print(t)
çağlar boyunca geldik çağlar aktı gitti. çağlar aktı

bigrams是元组的列表,因此要删除paren,可以在列表中的每个对上进行迭代。在

^{pr2}$

在你的剧本中结合这些想法:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import nltk
from nltk import word_tokenize
from nltk.util import ngrams

def find_bigrams():
    t = "çağlar boyunca geldik çağlar aktı gitti. çağlar aktı"
    token = nltk.word_tokenize(t)
    bigrams = ngrams(token,2)
    for i, j in bigrams:
        print("{0} {1}".format(i, j))

find_bigrams()

相关问题 更多 >