blog14 launch.py

2021SC@SDUSC

EmbedRank方法提取关键词的启动,在launch.py函数中。

引入项目中的其它模块:

import argparse
from configparser import ConfigParser

from swisscom_ai.research_keyphrase.embeddings.emb_distrib_local import EmbeddingDistributorLocal
from swisscom_ai.research_keyphrase.model.input_representation import InputTextObj
from swisscom_ai.research_keyphrase.model.method import MMRPhrase
from swisscom_ai.research_keyphrase.preprocessing.postagging import PosTaggingCoreNLP
from swisscom_ai.research_keyphrase.util.fileIO import read_file

提取关键词的函数:def extract_keyphrases(embedding_distrib, ptagger, raw_text, N, lang, beta=0.55, alias_threshold=0.7):
参数说明:
embedding_distrib:嵌入分发器对象请参见@嵌入分发器。
ptagger:位置标记对象请参见@PosTagger。
raw_text:一个包含要提取的行文本的字符串。
N:提取的关键词的数量。
lang:语言。
beta:MMR的测试系数(权衡信息性/多样性)
alias_threshold:将候选词组合为别名的阈值
返回值:包含三个元素的元组:
1)前N候选列表(如果没有足够的候选词,则更少)(字符串列表)2)关联相关性分数列表(浮点列表)3)列表,每个关键短语包含别名列表(字符串列表列表)

def extract_keyphrases(embedding_distrib, ptagger, raw_text, N, lang, beta=0.55, alias_threshold=0.7):
    tagged = ptagger.pos_tag_raw_text(raw_text)
    text_obj = InputTextObj(tagged, lang)
    return MMRPhrase(embedding_distrib, text_obj, N=N, beta=beta, alias_threshold=alias_threshold)

def load_local_embedding_distributor():
    config_parser = ConfigParser()
    config_parser.read('config.ini')
    sent2vec_model_path = config_parser.get('SENT2VEC', 'model_path')
    return EmbeddingDistributorLocal(sent2vec_model_path)

def load_local_corenlp_pos_tagger():
    config_parser = ConfigParser()
    config_parser.read('config.ini')
    host = config_parser.get('STANFORDCORENLPTAGGER', 'host')
    port = config_parser.get('STANFORDCORENLPTAGGER', 'port')
    return PosTaggingCoreNLP(host, port)

main函数:

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Extract keyphrases from raw text')

    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument('-raw_text', help='raw text to process')
    group.add_argument('-text_file', help='file containing the raw text to process')

    parser.add_argument('-tagger_host', help='CoreNLP host', default='localhost')
    parser.add_argument('-tagger_port', help='CoreNLP port', default=9000)
    parser.add_argument('-N', help='number of keyphrases to extract', required=True, type=int)
    args = parser.parse_args()

    if args.text_file:
        raw_text = read_file(args.text_file)
    else:
        raw_text = args.raw_text

    embedding_distributor = load_local_embedding_distributor()
    pos_tagger = load_local_corenlp_pos_tagger(args.tagger_host, args.tagger_port)
    print(extract_keyphrases(embedding_distributor, pos_tagger, raw_text, args.N, 'en'))

blog14 launch.py
blog14 launch.py

blog14 launch.py
通过使用句子嵌入,嵌入秩将文档和候选短语都嵌入到相同的嵌入空间中。利用候选对象与文档之间的余弦相似度,利用最大边际相关性选择N个候选对象作为关键词,利用候选对象之间的余弦相似度来建模多样性。一个超参数,beta(default=0.55),控制着在提取关键短语时对信息性和多样性的重要性。(beta=1仅信息性,仅=0多样性)当调用extract_keyphrases时,您可以更改beta超参数值:
kp1 = launch.extract_keyphrases(embedding_distributor, pos_tagger, raw_text, 10, 'en', beta=0.8)

如果想复制论文的结果,必须将beta设置为1或0.5,并通过指定alias_threshold=1到extract_keyphrases方法来关闭别名特性。

Original: https://blog.csdn.net/qq_46765753/article/details/121939409
Author: gh冲
Title: blog14 launch.py

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545098/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球