【问题标题】:Search Corpus by Part-of-Speach按词性搜索语料库
【发布时间】:2020-04-19 22:26:54
【问题描述】:

我是 NLP 新手。我正在尝试在语料库中搜索词性序列。目标是搜索一系列 POS 标签,并从给定语料库中找到与序列匹配的所有句子。

输入:敏捷的棕色狐狸跳过了懒惰的狗。 标记器将处理标记句子: 词性标注结果:[DT][JJ][JJ][NN][VBD][IN][DT][JJ][NNS][.] 应用搜索将产生任何与此序列匹配或更长的句子。

如何按词性搜索? NLTK 或 spacy 中是否有直接函数?

对于解决问题所需的步骤以及我可能面临的挑战,我将不胜感激。

请注意,我发现有人在 stackoverflow 上发布了类似的问题,但我认为他面临的问题更具体。 Search POS

【问题讨论】:

标签: nlp part-of-speech


【解决方案1】:

在下面的代码中,s1 是训练句。 s2 是任何其他句子。这不是提问者提出的直接代码,但有助于应用于句子并查找是否有任何句子与模式匹配。

#Invoke libraries
from nltk import word_tokenize, pos_tag  
import re

#Build functions
def tagsToString(t):
    sequence = ""
    return(sequence.join(t))

def sequenceMatch(s1,s2):
    tagSequence1 = ""
    taggedWords1 = pos_tag(word_tokenize(s1))
    tags1 = [tagged[1] for tagged in taggedWords1]
    tagSequence1 = "".join(tags1)

    tagSequence2 = ""
    taggedWords2 = pos_tag(word_tokenize(s2))
    tags2 = [tagged[1] for tagged in taggedWords2]
    tagSequence2 = "".join(tags2)

    if tagSequence2.find(tagSequence1) == 0:
        match = "yes"    
    else:
        match = "no"
    return(match)
#Example:
s1 = "The quick brown fox"
s2 = "The quick brown fox jumped over the lazy dog"

sequenceMatch(s1,s2)
#'yes'

【讨论】:

    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多