识别文本用哪种语言写成

原文:http://blog.youxu.info/2007/11/08/guess-language-of-text/

 

ASPN Python Cookbook 提到了一个使用 zlib 库识别文本用哪种语言写成的程序. 其核心代码不超过20行, 据我观察, 识别精度不低于95%. 我略做了一下修改, 把联合国联合国人权宣言作为语料库,目前从 wikipedia 上随便抓一篇爪哇文的文章下来, 都能识别得九不离十。

class Entropy:
    def __init__(self):      
		self.entro = []

    def register(self, name, corpus):
        """
        register a text as corpus for a language or author.
        <name> may also be a function or whatever you need
        to handle the result.
        """
        corpus = str(corpus)
        ziplen = len(zlib.compress(corpus))
        print name, ziplen
	self.entro.append((name, corpus, ziplen))

    def guess(self, part):
        """
        <part> is a text that will be compared with the registered
        corpora and the function will return what you defined as
        <name> in the registration process.
        """
        what = None
        diff = 0
        part = str(part)

        for name, corpus, ziplen in self.entro:
		nz = len(zlib.compress(corpus+part)) - ziplen
		if diff==0 or nz<diff:
                	what = name
        		diff = nz
        return what

先贴代码, 有时间细讲一下语言模型和信息论的妙用. 简单而小巧的模型解决看上去不可解决的问题, 这就是人工智能的精华.

[所有文件打包下载(包含语料源文件10Mb). 代码本身其实只有50行]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 Python 代码示例,可以用来识别和控制语言: ```python import speech_recognition as sr import pyttsx3 # 初始化语音识别器和语音合成器 r = sr.Recognizer() engine = pyttsx3.init() # 设置语音合成器的语速 rate = engine.getProperty('rate') engine.setProperty('rate', rate-50) # 用语音合成器朗读一段欢迎语 engine.say("欢迎使用语音控制系统") engine.runAndWait() while True: try: # 使用麦克风录音 with sr.Microphone() as source: print("请说话...") audio = r.listen(source) # 将录音转换成文本 text = r.recognize_google(audio, language='zh-CN') print("你刚才说的是:" + text) # 根据文本内容执行相应的操作 if "打开浏览器" in text: engine.say("正在打开浏览器") engine.runAndWait() # 这里可以加入打开浏览器的代码 elif "关闭浏览器" in text: engine.say("正在关闭浏览器") engine.runAndWait() # 这里可以加入关闭浏览器的代码 elif "退出" in text: engine.say("谢谢使用,再见!") engine.runAndWait() break else: engine.say("抱歉,我没有听懂你说的话") engine.runAndWait() except sr.UnknownValueError: engine.say("抱歉,我没有听懂你说的话") engine.runAndWait() except sr.RequestError as e: engine.say("抱歉,系统出现了错误:" + str(e)) engine.runAndWait() ``` 这段代码使用了 Python 中的 `speech_recognition` 库和 `pyttsx3` 库,前者用于语音识别,后者用于语音合成。代码中使用了 Google 的语音识别 API,需要联网才能使用。在代码中,我们可以根据用户说的话执行相应的操作。例如,当用户说“打开浏览器”时,我们可以调用相应的浏览器打开命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值