Page 45 - 高中 信息技术 选择性必修4 人工智能初步
P. 45

 2.3 自然语言处理







                         ④统一大小写。
                         处理上述两条评论之后,将得到如下两个结果。

                           [['top', '5', 'most', 'searched', 'for', 'back', '-', 'to', '-', 'school', 'topics', '--', 'the', 'list',

                        'may', 'surprise', 'you', '.'], ['back', 'to', 'school', '.']]
                           [['we', 'have', 'an', 'iot', 'workshop', 'by', 'at', '11pm', 'on', 'the', 'friday', '-', 'definitely',

                        'worth', 'going', 'for', 'inspiration', '!'], ['.'], ['hack', 'the', 'planet', '.']]


                         (2)创建词袋。
                         然后,我们根据训练数据集创建一个词袋(Bag-of-Word,简称BOW)。词袋
                                             广东教育出版社
                    是一个字典,里面存储着所有训练数据集中出现过的词汇,以及它们在全文中出现
                    的频数。这样做的目的,是为了剔除那些在全部训练数据集中极少出现的词汇(生
                    僻词),以及那些频繁出现但毫无意义的词汇,或称之为停词(Stop Words),例如

                    “the”“of”“a”等。
                         (3)创建特征字典。
                         接下来,为每条评论创建特征字典(Dictionary)。特征字典是指每条评论中出现在词袋

                    (剔除了罕见的生僻词和停词)中的词,以及它们在该条评论中出现的频数构成的字典。


                           {'-': 2, '--': 1, '.': 2, '5': 1, 'back': 2, 'list': 1, 'may': 1, 'school': 2, 'searched': 1, 'surprise':

                        1, 'top': 1, 'topics': 1}
                           {'!': 1, '-': 1,? '.': 2, '11pm': 1, 'definitely': 1, 'friday': 1, 'going': 1, 'hack': 1, 'inspiration':
                        1, 'iot': 1, 'planet': 1, 'workshop': 1, 'worth': 1}



                         2.  提取特征
                         到此为止,所有的预处理工作都已经完成了。我们得到了字典列表形式的训练数据集
                    和测试数据集,以及它们对应的标签列表。然而,这种形式的数据还不能被直接使用,还

                    需要借助Scikit-learn中提供的特征提取(Feature Extraction)模块。
                         Scikit-learn的特征模块可用于从由文本和图像等格式组成的数据集中提取特征,且这
                    种特征格式可用于机器学习算法中。

                         还可借用DictVectorizer(  )函数:
                         DictVectorizer(  )函数可将表示为标准Python字典对象列表的特征数组转换为可在
                    Scikit-learn中使用的NumPy与SciPy形式。



                        vec=DictVectorizer(  )
                        sparse_matrix_tra=vec.fit_transform(feature_dicts_tra)
                        sparse_matrix_dev=vec.transform(feature_dicts_dev)






                                                                                                                    37 37







          21Y3228.indd   37                                                                                        2019/10/10   14:23:29
   40   41   42   43   44   45   46   47   48   49   50