C/C++ Qt实现文章小说人物关系分析

目录
  • 一、所需工具软件
  • 二、使用步骤
    • 1.引入库
    • 2.创建元素操作函数
  • 三、运行结果

一、所需工具软件

1. Visual Stuido

2. C++

二、使用步骤

1.引入库

代码如下(示例):

#include "QtGuiApplication1.h"

#include<qDebug>
#include<QFile>

#include <fstream>
#include<iostream>
using namespace std;

#include <sstream>
#include <unordered_map>

2.创建元素操作函数

代码如下(示例):

//读取人物名称
void QtGuiApplication1::readOnButton()
{
    //打开关键词文件
    ifstream ifs;
    ifs.open("name.txt", ios::in);
    if (!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return;
    }

    //一行一行读取到数组中
    string buf;
    while (getline(ifs, buf))
    {
        cout << buf << endl;
        QString name = QString::buf);
        gNameList << name;
    }
    ifs.close();

    ui.textEdit->setPlainText(gNameList);

}

//出现次数
void QtGuiApplication1::timesOnButton()
{
    qDebug() << QString::fromLocal8Bit("人名次数统计");

    //统计归零
    if (gNameList.size() == 0)
    {
        std::cout << "请倒入人名列表后再试!" << std::endl;
    }

    gNameCounter.clear();

    for (auto name : gNameList)
    {
        std::string key = name.toLocal8Bit();
        gNameCounter[key] = 0;
    }

    //一行行读入小说
    ifstream ifs;
    ifs.open("天龙八部.txt", ios::in);
    if (!ifs.is_open())
    {
        cout << "打开文件失败" << endl;
        return;
    }

    //清空统计用的TABLE的数据
    gTable.clear();

    //统计结果显示到界面
    QStringList result;
    for (auto name : gNameList)
    {
        std::string keyword = name.toLocal8Bit();
        QString tmp = name + ":" + QString::number(gNameCounter[keyword]);
        result << tmp;

        std::cout << keyword << " " << gNameCounter[keyword] << std::endl;

    }
    ui.textEdit_3->setText(result.join("\n"));
}

//篇幅跨度
void QtGuiApplication1::rangeOnButton()
{
    ui.textEdit_3->clear();
    for (auto name : gNameList)
    {
        std::string keyword = name.toLocal8Bit();

        int firstLineNum = -1;
        int lastLineNum = -1;
        for (int i = 0; i < gTable.size(); i++)
        {
            auto& row = gTable.at(i);
            //std::cout << "行号:" << i << " ";

            int KeyWordCounts = row[keyword];
            if (KeyWordCounts > 0)
            {
                if (firstLineNum == -1)
                {
                    firstLineNum = i;
                }

                lastLineNum = i;
            }
        }

        ui.textEdit_3->append(QString::number(lastLineNum - firstLineNum));
    }
}

//关系最紧密两人
void QtGuiApplication1::relationGoodOnButton()
{
    ui.textEdit_3->clear();
    qDebug() << "test";

    //关系紧密算法,原理每个人名在第几行出现的行数集合和另一个人名行数集合求距离,取最小值为它的精密度
    //值越小的那个为此人和另一个人的最精密度,然后同样的方法计算出此人与其它人的精密度,最终取得
    //谁和这个人最紧密

    std::map < std::string, std::vector<int>> DataContainer;
    //正在对比的两个选手
    std::string player1, player2;
    int theMinDistance = 9999999999999999;
    for (auto name : gNameList)
    {
        std::string keyword = name.toLocal8Bit();
        std::vector<int> rowNums;

        for (int i = 0; i < gTable.size(); i++)
        {
            auto& row = gTable.at(i);
            //std::cout << "行号:" << i << " ";
            int KeyWordCounts = row[keyword];
            if (KeyWordCounts > 0)
            {
                rowNums.push_back(i);
            }
        }
        DataContainer[keyword] = rowNums;
    }

    ui.textEdit_3->append(QString::number(theMinDistance)+ QStringLiteral("行"));

}

三、运行结果

到此这篇关于C/C++ Qt实现文章小说人物关系分析的文章就介绍到这了,更多相关Qt小说人物关系分析内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • QT使用QFile进行文件操作

    QFile类我我们提供了操作文件的常用功能.它是一种io设备,可以用来读写文本文件和二进制文件,也可以用来读写Qt的资源文件.QFile类可以单独使用,该类本身提供了read/write函数,但更方便的方式是,将QFile和QTextStream或QDataStream一起使用. 一般情况下,使用QFile创建对象时,就会把要操作的文件名传递给它.但该类也提供了一个setFileName() 方法,允许我们在任何时候为QFile对象设置要操作的文件名.但是,QFile 只支持"/",不

  • Qt QFile文件操作的具体使用

    目录 QFile文件操作 QFile+QTextStream QFile+QDataStream 很多应用程序都需要具备操作文件的能力,包括对文件内容进行读/写.创建和删除文件等,甚至某些应用程序的诞生纯粹是为了操作文件,比如 WPS Office.PDFedit 等.为此,Qt 框架提供了 QFile 类专门用来操作文件. QFile文件操作 QFile 类支持对文件进行读取.写入.删除.重命名.拷贝等操作,它既可以操作文件文件,也可以操作二进制文件. 使用 QFile 类操作文件之前,程序中

  • Python利用networkx画图绘制Les Misérables人物关系

    目录 数据集介绍 数据处理 画图 networkx自带的数据集 完整代码 数据集介绍 <悲惨世界>中的人物关系图,图中共77个节点.254条边. 数据集截图: 打开README文件: Les Misérables network, part of the Koblenz Network Collection =========================================================================== This directory con

  • Python基于network模块制作电影人物关系图

    在我们生活的世界中,每一个人以及每一个事物相互之间都存在着关系,有直接关系,也有间接关系,最终会形成一个无形的大的关系网.network模块是一个用python语言开发的图论和复杂网络建模工具,模块内置了常用的图与复杂网络分析算法. network模块有四种图:Graph.DiGraph.MultiGraph.MultiDigraph,分别为无多重边无向图.无多重边有向图.有多重边无向图.有多重边有向图.其中Graph是用点和线来刻画离散事物集合中,每对事物间以某种方式相联系的数学模型. 下面我

  • python爬取晋江文学城小说评论(情绪分析)

    1. 收集数据 1.1 爬取晋江文学城收藏排行榜前50页的小说信息 获取收藏榜前50页的小说列表,第一页网址为 'http://www.jjwxc.net/bookbase.php?fw0=0&fbsj=0&ycx0=0&xx2=2&mainview0=0&sd0=0&lx0=0&fg0=0&sortType=0&isfinish=0&collectiontypes=ors&searchkeywords=&pa

  • PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析

    后来,我通过跟踪发现,这类情况的出现,跟 PHP 的 file_get_contents() 函数有着密切的关系. 大.中型网站中,基于 HTTP 协议的 API 接口调用,是家常便饭.PHP 程序员们喜欢使用简单便捷的 file_get_contents("http://example.com/") 函数,来获取一个 URL 的返回内容,但是,如果 http://example.com/ 这个网站响应缓慢,file_get_contents() 就会一直卡在那儿,不会超时. 我们知道

  • PHP中array_map与array_column之间的关系分析

    本文以实例形式分析了PHP中array_map与array_column之间的关系,具体分析如下: array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上 array_column();快速实现:将二维数组转为一维数组 array_column()函数格式为: array array_column ( array $input , mixed $column_key [, mixed $index_key ] ); 返回input

  • Python实现统计英文文章词频的方法分析

    本文实例讲述了Python实现统计英文文章词频的方法.分享给大家供大家参考,具体如下: 应用介绍: 统计英文文章词频是很常见的需求,本文利用python实现. 思路分析: 1.把英文文章的每个单词放到列表里,并统计列表长度: 2.遍历列表,对每个单词出现的次数进行统计,并将结果存储在字典中: 3.利用步骤1中获得的列表长度,求出每个单词出现的频率,并将结果存储在频率字典中: 4.以字典键值对的"值"为标准,对字典进行排序,输出结果(也可利用切片输出频率最大或最小的特定几个,因为经过排序

  • Flex Flash的关系分析

    1.Flex应用程序的生命周期 Flex应用就其根本上讲就是Flash应用,只不过其是基于Flex Framework(由ActionScript写就)开发的.Flex应用程序的根对象的是SystemManager(不是我们在flex应用上看到的Application根元素),继承自flash.dispaly.MovieClip-flash player display type,MovieClip是一种支持timeline基本元素帧frame的对象,在Flex Framework中System

  • 网站结构和网站优化关系分析

    游戏.下载等等都有自己独特的架构.如果网站的结构没有设置好的话,会严重影响网站的效果.但并不是网站结构设计的好就什么问题都解决了,要把网站优化的理念也设计进去,才是一个成功的网站结构. 网站优化中的网站结构优化对网站到底起什么作用呢?首先GOOGLE会用PR值来衡量网站的结构合理性,会赋予网站一个数值,数值越高说明你的网站结构更合理,GOOGLE就会收录更多的页面,带来更多的流量.其次网站结构会影响搜索引擎在网站页面上抓取的结果,也就控制了收录页面的数量和质量.如果网站结构合理又是什么样,说白了

  • jQuery动态效果显示人物结构关系图的方法

    本文实例讲述了jQuery动态效果显示人物结构关系图的方法.分享给大家供大家参考.具体分析如下: 这是一个人物关系图,可动态展示,效果非常漂亮.点击文字可出现动态关系图的转换效果. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&

  • 如何用Python来理一理红楼梦里的那些关系

    前言 今天,一起用 Python 来理一理红楼梦里的那些关系 不要问我为啥是红楼梦,而不是水浒三国或西游,因为我也鉴定的认为,红楼才是无可争议的中国古典小说只巅峰,且不接受反驳!而红楼梦也是我多次反复品读的为数不多的小说,对它的感情也是最深的. 好了,不酸了,开干. 数据准备 红楼梦 TXT 文件一份 金陵十二钗 + 贾宝玉 人物名称列表 人物列表内容如下: 宝玉 nr 黛玉 nr 宝钗 nr 湘云 nr 凤姐 nr 李纨 nr 元春 nr 迎春 nr 探春 nr 惜春 nr 妙玉 nr 巧姐

随机推荐