• 词性分法程序


    http://tieba.baidu.com/p/1180650771?pid=13814874186&cid=0#13814874186

    给你个函数看看,分析下有什么用

    句列表指针 存储的是一句话的数据,其中已经分好词,并知道每个词的词性.
    周春海(专有名词) 是(动词) 周依言(专有名词) 的(的词) 爸爸(抽象名词) .(句号词)
    程序里的词性分法和语文课本中的分法有所不同. 是链,有链最后都可以归结为动词链
    我的想法是把复杂的语句通过学习分解成简单的语句(程序可以理解的语句,就是程序里可以处理的语句),复杂的语句可能很多,但是简单的语句句型是有限的,通过编程,处理了简单语句,遇到复杂的语句通过句型分解成简单语句.


    应答类::应答函数(句列表类* 句列表指针)
    {
    // 周春海是周依言的爸爸.
    // 周春海是谁? 周春海 是 查找是链(周春海,0,0) 1 2 查找是链(1 0 0) 1 2 001,1,0,0,
    // 周春海是爸爸? 确认是链(周春海,爸爸,0) 查找是链(1,3,0) 01(1,3,0)
    // 周春海是谁的爸爸? 查找是链(周春海,爸爸,谁) 1 2 查找是链(1,5,3) 4 5 1 2 01(1,5,3) 4 5
    // 周春海是周依言的什么? 查找是链(周春海,什么人,周依言)
    // 周春海是周依言的爸爸? 确认是链(周春海,爸爸,周依言)
    // 随是周依言的爸爸? 查找有链(周依言,爸爸,谁)
    //周依言的爸爸是谁? 查找有链(周依言,爸爸,谁)
    // 周春海和周依言是什么关系? 查找是链(周春海,什么关系,周依言),查找是链(周依言,?周春海)
    CString 回应句型集=句列表指针->获取句型指针()->获取回应句型();
    CString 回应句子句型,临时串;
    int 可回应句子数量=回应句型集.Replace(_分号,_分号);
    int i,临时数,原句成分个数,回应句子成分个数;
    句类* 句类游标,**原句数组;
    CString *回应句子数组;
    回应句子数组=new CString [可回应句子数量];
    if(回应句型集==_空字符)
    {
    待回应数据队列类 待回应操作;
    句列表指针->设置所属处理流程(句列表指针->获取所属处理流程()+1000);
    待回应操作.添加待回应队列(句列表指针,_应答格式);
    传参指针->发送数据队列根指针->发送数据(句列表指针->获取环境指针()->获取套接字(),_应答格式+句列表指针->获取主键值()+_空格+句列表指针->获取原话());
    return;
    }

    原句成分个数=句列表指针->获取句类根指针()->获取节点个数(句列表指针->获取句类根指针());
    原句数组=new 句类* [原句成分个数+1];
    句类游标=句列表指针->获取句类根指针()->获取下一个节点();
    for( i=1;i<原句成分个数;i++)
    {
    原句数组[i]=句类游标;
    句类游标=句类游标->获取下一个节点();
    }

    // _T(" 0x哦 1 2 00是类确认1,0,0,; 明白; 知道了;"); _T("1 2 00是类确认1,0,0,")

    i=1;
    do {
    回应句子句型=回应句型集.Left(回应句型集.FindOneOf(_分号));
    回应句型集=回应句型集.Right(回应句型集.GetLength()-回应句型集.FindOneOf(_分号)-1);
    回应句子成分个数=回应句子句型.Replace(_空格,_空格);
    do{
    临时串=回应句子句型.Left(回应句子句型.FindOneOf(_空格));
    回应句子句型=回应句子句型.Right(回应句子句型.GetLength()-回应句子句型.FindOneOf(_空格)-1);
    if (临时串.Left(1)==_T("0"))
    {
    if(临时串.Left(3)==_T("000"))
    {
    回应句子数组[i]=回应句子数组[i]+临时串.Right(临时串.GetLength()-3);
    continue;
    }
    int j, 参数个数=临时串.Replace(_逗号,_逗号);
    CString 函数名=临时串.Left(3),参数串;
    临时串=临时串.Right(临时串.GetLength()-3);
    //回应句子数组[i]=回应句子数组[i].Right(回应句子数组[i].GetLength()-3);
    句类** 句类参数数组;
    句类参数数组=new 句类* [参数个数];
    j=0;
    do{
    参数串=临时串.Left(临时串.FindOneOf(_逗号));
    临时串=临时串.Right(临时串.GetLength()-临时串.FindOneOf(_逗号)-1);
    句类参数数组[j]=原句数组[_ttoi(参数串)];
    }while (j<参数个数);


    switch(_ttoi(函数名))
    {
    case 0:
    break;
    case 1:
    是类 是操作;
    回应句子数组[i]=回应句子数组[i]+是操作.查找是链(句类参数数组[0],句类参数数组[1],句类参数数组[2]);
    break;

    }
    delete [] 句类参数数组;
    }else{
    int j=_ttoi(临时串);
    回应句子数组[i]=回应句子数组[i]+原句数组[j]->获取词指针()->获取主键值();

    }
    }while(回应句子句型.GetLength()>1);


    }while(回应句型集.Replace(_分号,_分号)<1);


    传参指针->发送数据队列根指针->发送数据(句列表指针->获取环境指针()->获取套接字(),回应句子数组[rand()%可回应句子数量]);
    delete [] 回应句子数组;
    delete [] 原句数组;
    }

  • 相关阅读:
    Polly
    Ember.js 的视图层
    Ember.js入门教程、博文汇总
    点燃圣火! Ember.js 的初学者指南
    ElasticSearch第一步-环境配置
    C#泛型文章汇总
    LINQ之路10:LINQ to SQL 和 Entity Framework(下)
    LINQ之路 9:LINQ to SQL 和 Entity Framework(上)
    LINQ之路 8: 解释查询(Interpreted Queries)
    jquery.jqzoom.js图片放大镜
  • 原文地址:https://www.cnblogs.com/carl2380/p/2307630.html
Copyright © 2020-2023  润新知