neu kidokido

link:点击打开链接

树状数组,需要离散化!需要离散化!需要离散化!

#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
#include<map>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#define LL long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define sqr(a) (a)*(a)
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,n,m) for(int i=n;i>=m;i--)
#define lan(a,b) memset(a,b,sizeof(a))
#define maxn 500010
using namespace std;

struct node
{
    int x,id;
};

bool cmp(node a,node b)
{
    return a.x<b.x;
}

int shu[maxn];
int n;
node a[maxn];
int b[maxn];

int lowbit(int i)
{
    return i&(-i);
}

int query(int i)
{
    int ans=0;
    if(i==0)
        return 0;
    while(i>0)
    {
        ans=max(ans,shu[i]);
        i-=lowbit(i);
    }
    return ans;
}

void update(int p,int i)
{
    while(i<=1000000)
    {
        shu[i]=max(p,shu[i]);
        i+=lowbit(i);
    }
}

int main()
{
       // freopen("1.txt","r",stdin);
    //freopen("2.txt","w",stdout);
    while(~scanf("%d",&n))
    {
        int maxx=0;
        lan(a,0);
        lan(b,0);
        lan(shu,0);
        map<int ,int> vis;
        For(i,1,n)
        {
            int tem;
           scanf("%d",&tem);
           a[i].x=tem;
           a[i].id=i;
        }
        sort(a+1,a+1+n,cmp);
        int sum=1;
        b[a[1].id]=1;
        For(i,2,n)
        {
            if(a[i].x!=a[i-1].x)
                sum++;
            b[a[i].id]=sum;
        }
//        For(i,1,n)
//        printf("%d ",b[i]);
//        puts("");
        For(i,1,n)
        {
            int t=query(b[i]-1);
           // printf("i=%d t=%d\n",i,t);
            maxx=max(maxx,t+1);
            update(t+1,b[i]);
        }

        printf("%d\n",maxx);
    }
    return 0;
}

03-17
### 关于 NEU-Seg 的介绍 NEU-Seg 是一种基于神经网络的中文分词工具,通常用于自然语言处理中的文本预处理阶段。它通过深度学习技术实现高效的中文分词功能[^1]。以下是关于 NEU-Seg 的使用教程以及模型下载的相关说明。 --- ### NEU-Seg 安装配置 #### 依赖环境 在安装 NEU-Seg 之前,请确保已安装以下软件包: - Python (建议版本 >= 3.7) - PyTorch (推荐版本 >= 1.8) 可以通过以下命令安装必要的库: ```bash pip install torch torchvision torchaudio ``` 如果需要其他支持库(如 `jieba` 或者 `transformers`),可以一并安装: ```bash pip install jieba transformers ``` --- ### NEU-Seg 模型下载 NEU-Seg 提供了多种预训练模型,这些模型可以在公开的数据集上进行微调或者直接应用到实际场景中。常见的模型文件可以从官方 GitHub 页面或其他开源平台获取: 1. **GitHub 地址**: 如果有提供具体链接,则可以直接访问项目主页。 2. **模型权重**: 预训练好的权重文件一般位于 Releases 页面下,例如 `neu_seg_model.pth`. 下载完成后,解压至指定目录以便后续加载。 --- ### NEU-Seg 使用方法 #### 加载模型 假设已经成功下载并保存好模型文件,在代码中可通过如下方式加载: ```python import torch from neu_seg import NeuSegModel # 假设这是对应的模块名 # 初始化模型实例 model_path = "./path/to/neu_seg_model.pth" device = "cuda" if torch.cuda.is_available() else "cpu" model = NeuSegModel.load_from_checkpoint(model_path).to(device) model.eval() ``` #### 输入文本分词 对于一段待分词的中文字符串,可按照以下流程操作: ```python def segment_text(text, model): tokens = model.tokenize(text) # 转化成 token 序列 segmented_result = model.predict(tokens) # 执行预测 return segmented_result input_sentence = "我喜欢吃北京烤鸭" result = segment_text(input_sentence, model) print(result) ``` 上述代码会返回类似于 `[('我', 'S'), ('喜欢', 'B-E'), ...]` 的标注结果,其中 S 表示单字词语,而 B/E 则分别代表短语开头/结尾标记。 --- ### 性能评估优化 由于 NEU-Seg 主要作为基准测试(Benchmark)[^1]用途设计,因此其性能可能并非最优。为了提升效果,可以根据特定领域调整超参数或重新训练模型。例如增加自定义停用词表、扩充训练样本数量等方式均有助于改善最终表现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值