易百教程人工智能python修正-人工智能NLTK性别发现器

在这个问题陈述中,将通过提供名字来训练分类器以找到性别(男性或女性)。 我们需要使用启发式构造特征向量并训练分类器。这里使用scikit-learn软件包中的标签数据。 以下是构建性别查找器的Python代码 -

导入必要的软件包 -

import random

from nltk import NaiveBayesClassifier
from nltk.classify import accuracy as nltk_accuracy
from nltk.corpus import names

 

现在需要从输入字中提取最后的N个字母。 这些字母将作为功能 -
def extract_features(word, N = 2): last_n_letters = word[-N:] return {'feature': last_n_letters.lower()} if __name__=='__main__': 
 

使用NLTK中提供的标签名称(男性和女性)创建培训数据 -

male_list = [(name, 'male') for name in names.words('male.txt')] female_list = [(name, 'female') for name in names.words('female.txt')] data = (male_list + female_list) random.seed(5) random.shuffle(data) 
 

现在,测试数据将被创建如下 -

namesInput = ['Rajesh', 'Gaurav', 'Swati', 'Shubha'] 
 

使用以下代码定义用于列车和测试的样本数 -

train_sample = int(0.8 * len(data)) 
 

现在,需要迭代不同的长度,以便可以比较精度 -

for i in range(1, 6): print('\nNumber of end letters:', i) features = [(extract_features(n, i), gender) for (n, gender) in data] train_data, test_data = features[:train_sample], features[train_sample:] classifier = NaiveBayesClassifier.train(train_data) 
 

分类器的准确度可以计算如下 -

accuracy_classifier = round(100 * nltk_accuracy(classifier, test_data), 2) print('Accuracy = ' + str(accuracy_classifier) + '%') 
 

现在,可以预测输出结果 -

for name in namesInput:
   print(name, '==>', classifier.classify(extract_features(name, i)) 
 

上述程序将生成以下输出 -

Number of end letters: 1
Accuracy = 74.7%
Rajesh -> female
Gaurav -> male
Swati -> female
Shubha -> female

Number of end letters: 2
Accuracy = 78.79%
Rajesh -> male
Gaurav -> male
Swati -> female
Shubha -> female

Number of end letters: 3
Accuracy = 77.22%
Rajesh -> male
Gaurav -> female
Swati -> female
Shubha -> female

Number of end letters: 4
Accuracy = 69.98%
Rajesh -> female
Gaurav -> female
Swati -> female
Shubha -> female

Number of end letters: 5
Accuracy = 64.63%
Rajesh -> female
Gaurav -> female
Swati -> female
Shubha -> female
在上面的输出中可以看到,结束字母的最大数量的准确性是两个,并且随着结束字母数量的增加而减少。

完整代码

import random

from nltk import NaiveBayesClassifier
from nltk.classify import accuracy as nltk_accuracy
from nltk.corpus import names


def extract_features(word, N=2):
    last_n_letters = word[-N:]
    return {'feature': last_n_letters.lower()}


if __name__ == '__main__':

    male_list = [(name, 'male') for name in names.words('male.txt')]
    female_list = [(name, 'female') for name in names.words('female.txt')]
    data = (male_list + female_list)

    random.seed(5)
    random.shuffle(data)
    namesInput = ['Rajesh', 'Gaurav', 'Swati', 'Shubha']
    train_sample = int(0.8 * len(data))

    for i in range(1, 6):
        print('\nNumber of end letters:', i)
        features = [(extract_features(n, i), gender) for (n, gender) in data]
        train_data, test_data = features[:train_sample], features[train_sample:]

        classifier = NaiveBayesClassifier.train(train_data)

        accuracy_classifier = round(100 * nltk_accuracy(classifier, test_data), 2)
        print('Accuracy = ' + str(accuracy_classifier) + '%')

        for name in namesInput:
            print(name, '==>', classifier.classify(extract_features(name, i)))

 

转载于:https://www.cnblogs.com/duoba/p/9535701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SQLite 是一种轻量级的关系型数据库管理系统,它被广泛应用于各种应用程序开发中。虽然 SQLite 的官方文档是英文的,但是在网上也可以找到一些中文文档来帮助开发者更好地理解 SQLite。下面我们来谈谈 SQLite 中文文档。 首先,SQLite 的中文文档一般包括 SQLite 基本介绍、安装、配置、命令行交互、SQL 语句、可编程 API 等内容。对于初学者来说,这些内容非常有帮助。在中文文档中,每个主题都会有详细的介绍和说明,让读者能够更好地理解 SQLite 是如何工作的,以及如何使用它来管理数据。 其次,中文文档中一般会附带一些例子或代码片段,这让读者能够更快地上手和理解 SQLite 的一些概念和操作,提高学习效率。 最后,对于一些进阶操作,中文文档也会给出详细的说明和操作指南,让读者能够更好地应用 SQLite 到实际的项目中。 总的来说,SQLite 中文文档是开发者学习和使用 SQLite 的重要工具之一。通过阅读中文文档,开发者能够更好地掌握 SQLite 的基础知识和高级操作,为开发高品质的应用程序提供了有力的支持。 ### 回答2: SQLite是一种轻型、嵌入式关系型数据库管理系统,由于其高效、灵活、易用等特点而被广泛应用于移动设备、桌面应用程序、Web应用程序等领域。SQLite支持的数据类型包括NULL、INTEGER、REAL、TEXT、BLOB五种数据类型,并且支持事务、触发、视图、外键等高级特性,可以大大提升数据库的处理性能和安全性。 对于初学者来说,掌握SQLite的各种功能需要一定的学习资料。其中中文文档是不可或缺的一个方面。在SQLite官网上可以找到官方英文文档,而中文文档通常由社区或者爱好者翻译和整理。根据个人经验,推荐两个中文文档网站:SQLite中文网(https://www.sqlite.org.cn/)和易百教程(https://www.yiibai.com/sqlite/)。 SQLite中文网是一个专门针对SQLite数据库的中文网站,提供了SQLite数据库的基础概念、SQL语句操作、高级特性等全面的中文资料。易百教程则是一个面向广大IT从业人员提供免费学习教程的网站,旗下拥有一系列SQLite教程,选材广泛、以实战为主,适合于初学者阅读。 总之,掌握SQLite的各种功能需要一定的学习资料,中文文档旨在帮助SQLite的学习者更好地、更快地掌握SQLite数据库的知识。建议初学者多参考多看一些相关文档和书籍,这样也会有助于快速进入SQLite开发的角色之中。 ### 回答3: SQLite是一种轻量级的关系型数据库管理系统,适用于各种小型应用程序。它是一个开源项目,可供在多个平台上使用,包括Windows、Linux、Mac OS等,而且还提供了多种编程语言接口,如C、Java、Python等。在SQLite中文文档中,你可以学习如何创建和使用SQLite数据库,以及如何在各种编程语言中使用SQLite API进行数据访问和操作。 SQLite中文文档可以帮助您了解各种命令和函数,以及如何使用它们来对数据库进行操作。文档中包含SQLite的基本概念、语法规则、常用的命令和函数说明,以及一些高级特性。此外,文档还提供了大量的示例代码和实践建议,让您学习SQLite变得更加简。 对于像初学者和开发人员来说,SQLite中文文档是一个非常宝贵的资源。文档将指导您了解何时使用SQLite,SQLite的优势和SQLite限制,以及如何正确地使用SQLite来实现需求。它也帮助您避免在使用SQLite时常见的错误。 总之, SQLite中文文档是必备资源,无论您是为了学习SQLite还是在项目中应用SQLite,都非常有帮助。它将作为您入门SQLite的绝佳资料,并帮助您在开发中遇到的困难顺利解决。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值