【发布时间】:2021-05-14 11:05:01
【问题描述】:
我有一个包含 260 个句子的 file tagged by part-of-speech。我想逐句计算这个标记文件的词汇密度(内容词的总和 - 名词、动词、形容词和副词 - 除以单词的总和)。
首先我需要将文本拆分成句子,然后在每个句子中迭代搜索标签并计算它们。到目前为止,我只能将文本分成句子,但我不知道如何在每个句子中查找正确的标签(动词、名词、ADJ、ADV)并将它们除以单词总数这句话。谁能帮我完成这项任务?到目前为止我尝试的代码如下。
def sent_ld():
while True:
try:
file_to_open =Path(input("\nYOU SELECTED OPTION 8: CALCULATE SENTENCE
LENGTH.
Please, insert your file path: "))
with open(file_to_open,'r', encoding="utf-8") as f:
sentences = f.read()
break
except FileNotFoundError:
print("\nFile not found. Better try again")
except IsADirectoryError:
print("\nIncorrect Directory path.Try again")
units=sentences.split('<<SPACE>>')
tags=[ 'ADJ','ADP','NOUN','ADV','AUX','CONJ','CCONJ','DET','INTJ','NOUN','NUM','PART','PRON','PROPN','PUNCT','SCONJ','SYM','VERB','X','SPACE']
pat=re.compile('[A-Z][A-Z]+')
for u in units:
m=re.findall(pat, u)
summ=[]
remaining=[]
space=[]
punct=[]
num=[]
propn=[]
d1=defaultdict(int)
for i in m:
if i in tags:
d1[i]+=1
sent_number=1
for y in d1:
if y =='ADV':
soma.append(d1[y])
elif y == 'NOUN':
soma.append(d1[y])
elif y == 'ADJ':
soma.append(d1[y])
elif y == 'VERB':
soma.append(d1[y])
elif y == 'PROPN':
soma.append(d1[y])
elif y == 'SYM':
soma.append(d1[y])
elif y == 'SPACE':
space.append(d1[y])
elif y == 'PUNCT':
punct.append(d1[y])
elif y == 'NUM':
num.append(d1[y])
else:
resto.append(d1[y])
print('Sentence',sent_number, 'lexical density is: ', sum(summ)/sum(remaining))
sent_number+=1
sent_ld()
【问题讨论】:
标签: python lexical-analysis part-of-speech