ASP.NET Core 8 MVC AI智能文本生成,文本纠错,词法分析,附源代码下载

前言

本文继续使用ASP.NET Core 8 MVC框架搭建,使用腾讯云AI基础产品里的NLP服务,做一个智能文本处理的示例。可实现文案创作(小说、论文等编写),文案自动纠错并给出修改建议。有想做自媒体辅助工具的可参考本示例。同时巩固一下MVC中的常用技术点。

开发环境

1.开发工具VS2022
2.运行框架.NET8
3.NuGet包:TencentCloudSDK

代码说明

  • 在配置文件添加腾讯云API密钥和KEY,并配置启动端口。
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "TencentCloud": { //腾讯云API接口密钥与KEY
    "SecretId": "",
    "SecretKey": ""
  },
  "AllowedHosts": "*",
  "Kestrel": {  //启动端口配置
    "EndPoints": {
      "Http": {
        "Url": "http://*:5209"
      }
    }
  }
}

  • 添加一个Demo控制器,并添加一个视图页面。
public class DemoController : Controller
{
    /// <summary>
    /// 用于读取配置文件
    /// </summary>
    private readonly IConfiguration Configuration;
    public DemoController(IConfiguration configuration)
    {
        Configuration = configuration;
    }
    /// <summary>
    /// 添加一个视图
    /// </summary>
    public IActionResult Couplet()
    {
        return View();
    }
}
  • 编辑视图页面html代码,使用创建项目的自带的bootstrap即可。
@model ComposeCoupletResponse
@{
    ViewData["Title"] = "智能文本生成与处理";
}
<h1>@ViewData["Title"]</h1>
<br />
<partial name="/Views/Shared/_Tabs.cshtml" />
<br />
<form action="/demo/SaveCouplet" method="post" id="f">
    <div class="mb-3">
        <label for="exampleInputEmail1" class="form-label">关键词</label>
        <input type="text" class="form-control" name="Txt" value="">
    </div>
    <button type="button" class="btn btn-primary btn-lg" id="sub">
        <span class="spinner-border spinner-border-sm" role="status" id="statues" style="display:none;"></span>
        生成
    </button>
</form>
<br />
@{
    if (Model != null)
    {
        <p>横批:<span>@Model?.TopScroll</span></p>
        <p>上联:<span>@Model?.Content[0]</span></p>
        <p>下联:<span>@Model?.Content[1]</span></p>
    }
}

@section Scripts {
    <script>
        $('#sub').on('click', function () {
            $("#statues").attr("style", "")
            $('#f').submit();
        });
    </script>
}
  • 添加分部视图,把页面共用部分抽离出来。
<ul class="nav nav-pills">
    @{
        var dic = new Dictionary<string, string>()
        {
            { "/Demo/Couplet","对联生成"},
            { "/Demo/Poetry","诗词生成"},
            { "/Demo/Sentence","句子生成"},
            { "/Demo/ErrorCorrection","句子纠错"},
            { "/Demo/Completion","文本续写"},
            { "/Demo/Optimization","文本优化"}
        };

        foreach (var item in dic)
        {
            if (item.Key == Context.Request.Path)
            {
                <li class="nav-item">
                    <a class="nav-link active" aria-current="page" href="@item.Key">@item.Value</a>
                </li>
            }
            else
            {
                <li class="nav-item">
                    <a class="nav-link" href="@item.Key">@item.Value</a>
                </li>
            }
        }
    }
</ul>

运行效果

NLP示例

源码下载

下载本示例完整源代码:立即下载
源代码仅为Demo参考,请勿在项目中直接使用。更多高级操作及免费额度情况,请自行前往腾讯云官网进行查看。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的Java词法分析器的源代码示例: ``` import java.util.*; public class Lexer { private String input; private int position; private Token currentToken; public Lexer(String input) { this.input = input; this.position = 0; this.currentToken = null; } public Token getCurrentToken() { return currentToken; } public Token getNextToken() { if (position >= input.length()) { return null; } char ch = input.charAt(position); if (Character.isDigit(ch)) { return readNumber(); } else if (Character.isLetter(ch)) { return readIdentifier(); } else if (ch == '+') { position++; return new Token(TokenType.PLUS, "+"); } else if (ch == '-') { position++; return new Token(TokenType.MINUS, "-"); } else if (ch == '*') { position++; return new Token(TokenType.MULTIPLY, "*"); } else if (ch == '/') { position++; return new Token(TokenType.DIVIDE, "/"); } else { throw new IllegalArgumentException("Invalid character: " + ch); } } private Token readNumber() { StringBuilder sb = new StringBuilder(); while (position < input.length() && Character.isDigit(input.charAt(position))) { sb.append(input.charAt(position)); position++; } return new Token(TokenType.NUMBER, sb.toString()); } private Token readIdentifier() { StringBuilder sb = new StringBuilder(); while (position < input.length() && Character.isLetter(input.charAt(position))) { sb.append(input.charAt(position)); position++; } return new Token(TokenType.IDENTIFIER, sb.toString()); } } enum TokenType { NUMBER, IDENTIFIER, PLUS, MINUS, MULTIPLY, DIVIDE } class Token { private TokenType type; private String value; public Token(TokenType type, String value) { this.type = type; this.value = value; } public TokenType getType() { return type; } public String getValue() { return value; } @Override public String toString() { return "Token{" + "type=" + type + ", value='" + value + '\'' + '}'; } } ``` 该代码实现了一个简单的词法分析器,可以识别数字、标识符和四种运算符(加、减、乘、除)。在getNextToken方法中,以当前位置的字符为判断依据,分别调用readNumber、readIdentifier和其他方法来读取不同类型的Token。Token类定义了Token的类型和值,并提供了toString方法以便于调试和打印。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁程序员有话说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值