python命令语法规则_NLTK Regex Chunker未在一个命令中处理多个语法规则

我试图从我的语料库中提取短语。为此,我定义了两个规则,一个是名词后跟多个名词,另一个是形容词后接名词,这里我希望如果从两个规则中提取相同的短语,程序应该忽略第二个规则,我面临的问题是这些短语只从第一个规则中提取,并且第二条规则不适用。

代码如下:PATTERN = r"""

NP: {+}

{*}

"""

MIN_FREQ = 1

MIN_CVAL = -13 # lowest cval -13

def __init__(self):

corpus_root = os.path.abspath('../multiwords/test')

self.corpus = nltk.corpus.reader.TaggedCorpusReader(corpus_root,'.*')

self.word_count_by_document = None

self.phrase_frequencies = None

def calculate_phrase_frequencies(self):

"""

extract the sentence chunks according to PATTERN and calculate

the frequency of chunks with pos tags

"""

# pdb.set_trace()

chunk_freq_dict = defaultdict(int)

chunker = nltk.RegexpParser(self.PATTERN)

for sent in self.corpus.tagged_sents():

sent = [s for s in sent if s[1] is not None]

for chk in chunker.parse(sent).subtrees():

if str(chk).startswith('(NP'):

phrase = chk.__unicode__()[4:-1]

if '\n' in phrase:

phrase = ' '.join(phrase.split())

just_phrase = ' '.join([w.rsplit('/', 1)[0] for w in phrase.split(' ')])

# print(just_phrase)

chunk_freq_dict[just_phrase] += 1

self.phrase_frequencies = chunk_freq_dict

#print(self.phrase_frequencies)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值