Python 自然语言处理 二: 用ngrams 进行 语言种类识别

本文介绍了一种基于ngrams的简单方法来识别语言类别,尤其针对相似度高的马来文、印尼文和泰米尔语。通过建立4-grams语言模型,实现了在Python和nltk库下的语言识别功能。虽然代码可能冗长,但对于学习自然语言处理和人工智能的初学者具有参考价值。
摘要由CSDN通过智能技术生成


世界上的语言种类很多,然而很多油相似之处,如何智能的识别出语言类别,也是如今自然语言处理的一个话题。用ngrams的理念来搭建语言模型从而识别出语言类别是一个基本简单的方法。(当然现在网上有很多API可以直接调用) 就比如以下的例子

malaysian(马来文) Semua manusia dilahirkan bebas
indonesian (印尼文)Semua orang  dilahirkan merdeka
tamil (泰米尔语)Maitap piiviyiar cakalarum cutantiramkav piakkiaar

马来文和印尼文泰米尔语 这三种语言相似度特别大,如何只能判别出三种语言。根据已有的语料库,建立4-grams的语言模型。

这次是一次作业,由于第一次用python和nltk. 代码会显得重复冗长(大神见笑了)。希望能给正在学习语言处理和人工智能的朋友们起到一点参考价值。

没什么好说的,上代码。

#!/usr/bin/python
#import division
from __future__ import division
import re
import nltk
import sys
import getopt 
#import ngrams from nltk to help build ngrams
from nltk.util import ngrams

# the LMs
#LM for indonesian
dict_indonesian = {}
#LM for malaysian
dict_malaysian = {}
#LM for tamil
dict_tamil = {}
#LM for store all the entries, to help smoothing
dict_all = {}


def build_LM(in_file):
    """
    build language models for each label
    each line in in_file contains a label and an URL separated by a tab(\t)
    """
    print 'building language models...'
    # This is an e
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值