You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从WordNet C语言库中按指定词性获取随机词汇

基于WordNet C接口实现指定词性随机词检索的方法

核心逻辑

WordNet原生的findtheinfo_ds接口仅支持传入已知目标词查询,要实现随机检索,需要先读取对应词性的索引词表,再随机取词:

  • WordNet内置的词性常量对应关系:
    • 1 = 名词
    • 2 = 动词
    • 3 = 形容词
    • 4 = 副词
  • 用到的新增WordNet接口:
    • int getindexcnt(int pos):返回指定词性的索引词总数量
    • char *index_at_offset(int pos, int offset):返回指定词性、指定偏移位置的索引词

完整可运行示例代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <wn.h>

int main()
{
    // 可自定义要检索的词性,这里示例取名词
    int target_pos = 1;
    int word_cnt, rand_offset;
    char *random_word;
    struct ss *result;

    // 初始化WordNet和随机数种子
    wninit();
    srand((unsigned int)time(NULL));

    // 获取指定词性的总词数
    word_cnt = getindexcnt(target_pos);
    if (word_cnt <= 0) {
        printf("无效的词性参数\n");
        return 1;
    }

    // 生成合法范围内的随机偏移量
    rand_offset = rand() % word_cnt;
    // 获取随机词
    random_word = index_at_offset(target_pos, rand_offset);
    printf("随机抽取的词汇:%s\n", random_word);

    // 后续可继续用你原有的逻辑查询该词的synset信息
    result = findtheinfo_ds(random_word, target_pos, 2, ALLSENSES);
    if (result) {
        printf("该词汇对应synset定义:%s\n", result->defn);
    }

    return 0;
}

编译运行注意事项

编译时需要链接WordNet库,编译指令示例:
gcc random_wn_word.c -o random_wn_word -lwn
如果系统WordNet头文件不在标准路径,需要额外加-I参数指定头文件目录,-L参数指定库文件目录。

内容的提问来源于stack exchange,提问作者codeanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:54:03