当前位置: 首页 > 知识库问答 >
问题:

识别特定方言中的一般短语

周苑博
2023-03-14

我正在寻找一种算法或方法,可以帮助从具有特定方言的文本语料库中识别一般短语(它来自特定领域,但对于我来说是英语方言)——例如,以下片段可能来自与世界或魔兽或MMORPHs相关的更大语料库。

玩家以第三人称或第一人称视图控制游戏世界中的角色化身,探索地形,与各种怪物战斗,完成任务,并与非玩家角色(NPC)或其他玩家互动。同样与其他MMORPG类似,《魔兽世界》要求玩家支付订阅费,或者购买预付游戏卡,支付一定的游戏时间,或者使用信用卡或借记卡定期支付

作为以上内容的输出,我想确定以下一般短语:

  1. 第一人称
  2. 魔兽世界
  3. 预付游戏卡
  4. 借记卡

笔记:

>

  • 这里和这里有一个类似于我之前的问题,但为了澄清,我的问题有以下区别:

    一种。我正在尝试使用现有的工具包,例如NLTK、OpenNLP等。

    B.我对识别句子中的其他词性不感兴趣

    C.我可以使用人工干预,其中算法将识别的名词短语呈现给人类专家,然后人类专家可以确认或拒绝调查结果,但是我们没有资源来训练人工注释数据上的语言模型

  • 共有2个答案

    仉昂熙
    2023-03-14

    似乎您正在尝试进行名词短语提取。TextBlob Python库包括两个现成的名词短语提取实现。

    最简单的方法是使用默认的FastNPExtractor,它基于此处描述的Shlomi Babluki算法。

    from text.blob import TextBlob
    
    text = '''
    players control a character avatar within a game world in third person or first
    person view, exploring the landscape, fighting various monsters, completing quests,
    and interacting with non-player characters (NPCs) or other players. Also similar
    to other MMORPGs, World of Warcraft requires the player to pay for a
    subscription, either by buying prepaid game cards for a selected amount of
    playing time, or by using a credit or debit card to pay on a regular basis
    '''
    
    blob = TextBlob(text)
    print(blob.noun_phrases)  # ['players control', 'character avatar' ...]
    

    换成另一个实现(基于NLTK的chunker)相当容易。

    from text.np_extractors import ConllExtractor
    
    blob = TextBlob(text, np_extractor=ConllExtractor())
    
    print(blob.noun_phrases)  # ['character avatar', 'game world' ...]
    

    如果这两个都不够,您可以创建自己的名词短语提取器类。我建议查看TextBlobnp_extractor模块源代码以获取示例。要更好地理解名词短语组块,请查看NLTK书籍第7章。

    田柏
    2023-03-14

    Nltk内置了词性标注,已被证明非常擅长识别未知单词。这就是说,你似乎误解了名词是什么,你可能应该巩固你对这两个词类的理解,以及你的问题。

    例如,在第一人称中,first是一个形容词。您可以自动假设相关形容词是该短语的一部分。

    或者,如果你想要识别一般短语,我的建议是实现一个简单的马尔可夫链模型,然后寻找特别高的转移概率。

    如果您正在寻找Python中的马尔可夫链实现,我会向您指出我在当天写的要点:https://gist.github.com/Slater-Victoroff/6227656

    如果你想获得比这更高的水平,你将很快进入论文领域。我希望这能有所帮助。

    P.S.Nltk包含大量预注释的小体,可能适用于您的目的。

     类似资料:
    • 我目前是一名学生,我必须为一个项目安装Jhipster,安装似乎很好,但我面临许多问题。事实上,当我想编译jdl文件时,我想用sudo来编译,但jhipster并不是只有在我使用sudo时才能找到的(如果没有它,它就可以工作) 此外,当我试图启动Jhipster项目时,我必须这样做/mnvw或sudo/mnvw。在这里,当我使用sudo时,会出现一条警告消息:“警告:JAVA_HOME环境变量未设

    • The easiest way to internationalize PHP software is by using array files and using those strings in templates, such as <h1><?=$TRANS['title_about_page']?></h1>. This is, however, hardly a recommended

    • 在javaFx中,对于每个带有FXID的控件,我们可以在每个生成的控制器类的initialize方法中看到以下语句。 我可以理解,该语句是为了确保在加载这个fxml时,带有这个fx:id的控件出现在fxml布局文件中,如果该控件不存在,它将抛出异常并退出fxml加载过程。 null

    • 问题内容: 我正在使用石英进行日程安排。 它接受5个参数。(秒,分钟,小时,daysOfMonth,月份)。 当我通过第四个参数作为“ 09”。Eclipse给我错误“ int类型的文字八进制09(数字9)超出范围”。 但是,当我将第四个参数作为“ 9”而不是“ 09”传递时,它起作用了。 谁能解释这个错误? 问题答案: 在Java中,如果要定义整数,则前导“ 0”将表示您正在以八进制定义数字

    • 本文向大家介绍C#中字符串的一般性和特殊性,包括了C#中字符串的一般性和特殊性的使用技巧和注意事项,需要的朋友参考一下 string 类型是C#的基元类型之一,它是一个引用类型,对应FCL中的System.String类型。string 类型和普通的引用类型相比有什么样的相同点和不同点呢? 1、字符串具有固定不变性,字符串存在于System.String命名空间下,通过反编译工具我们可以看到: 字

    • 我一直在android中开发语音识别API,发现当语言设置更改时,语音结果会发生变化,有没有办法通过编程进行设置?或者是否打算在语音语言设置屏幕上使用午餐?或者其他什么?注意:我试图使用这个额外的意图: 但这是无效的