Divinity004 2021-04-08 00:59 采纳率: 25%
浏览 708

python如何判断一句英文中的单词是什么词性

数据表里有英文原句,也有句子中每个单词的词性。要在python根据数据表判断每个单词是什么词性

import sqlite3

#连接数据库
#获取原句
conn = sqlite3.connect('label.db')
cur = conn.cursor()
sql = "select sentence from label"
cur.execute(sql)
sentences = cur.fetchall()

#获取第一句的名词
sql_2 = "select noun from label"
cur.execute(sql_2)
nouns = cur.fetchall()
noun1 = nouns[0]

#获取第一句的动词
sql_3 = "select verb from label"
cur.execute(sql_3)
verbs = cur.fetchall()
verb1 = verbs[0]


for n in noun1:
    list_n = n.split(',')

for v in verb1:
    list_v = v.split(',')

#拿到第一句的每个单词
for words in sentences[0]:
    word1 = words.replace('.', '')
    word2 = word1.split()
    
www = []
for w in word2:
    if w in list_n:
        w_n = " "+'<font color="red">' + w + " "+ '</font>'
        www.append(w_n)
    elif w in list_v:
        w_v = " "+'<font color="green">' + w + " " + '</font>'
        www.append(w_v)
    else:
        w1 = " "+ w +" "
        # print('<span>' + w + '</span>')
        www.append(w1)

se2 = "".join(www)    
print(se2)

只能做到第一句,没办法做到多个句子一起判断

  • 写回答

1条回答 默认 最新

  • Divinity004 2021-04-08 01:55
    关注
    import sqlite3
    
    conn = sqlite3.connect('test2.db')
    cur = conn.cursor()
    
    #句子
    sql = "select sentence from label"
    cur.execute(sql)
    sentences = cur.fetchall() 
    
    
    #名词
    sql_2 = "select noun from label"
    cur.execute(sql_2)
    nouns = cur.fetchall()
    
    
    #动词
    sql_3 = "select verb from label"
    cur.execute(sql_3)
    verbs = cur.fetchall()
    
    #形容词
    sql_4 = "select adj from label"
    cur.execute(sql_4)
    adjs = cur.fetchall()
    
    
    #副词
    sql_5 = "select adv from label"
    cur.execute(sql_5)
    advs = cur.fetchall()
    
    #连词
    sql_6 = "select conjunction from label"
    cur.execute(sql_6)
    conjunctions = cur.fetchall()
    
    #介词
    sql_7 = "select prep from label"
    cur.execute(sql_7)
    preps = cur.fetchall()
    
    #代词
    sql_8 = "select pronoun from label"
    cur.execute(sql_8)
    pronouns = cur.fetchall()
    
    
    
    index=0
    
    for index in range(3):
        # print(sentences[index])
        # print(nouns[index])
        www = []
        for sentence in sentences[index]:
            words_list=sentence.split()
            # print('单词列表',index, words_list)
        for noun,verb,adj,adv,conjunction,prep,pronoun in zip(nouns[index],verbs[index],adjs[index],advs[index],conjunctions[index],preps[index],pronouns[index]):
            noun_list=noun.split(',')
            verb_list=verb.split(',')
            adj_list=adj.split(',')
            adv_list=adv.split(',')
            conjunction_list=conjunction.split(',')
            prep_list=prep.split(',')
            pronoun_list=pronoun.split(',')
            
            
    
        for words in words_list:
            if words in noun_list:
                words_n = " "+'<font color="red">' + words + " "+ '</font>'
                www.append(words_n)  
            elif words in verb_list:
                words_v = " "+'<font color="green">' + words + " " + '</font>'
                www.append(words_v)
            elif words in adj_list:
                words_adj = " "+'<font color="pink">' + words + " " + '</font>'
                www.append(words_adj)
            elif words in adv_list:
                words_adv = " "+'<font color="orange">' + words + " " + '</font>'
                www.append(words_adv)
            elif words in conjunction_list:
                words_conjunction = " "+'<font color="blue">' + words + " " + '</font>'
                www.append(words_conjunction)
            elif words in prep_list:
                words_prep = " "+'<font color="purple">' + words + " " + '</font>'
                www.append(words_prep)
            elif words in pronoun_list:
                words_pronoun = " "+'<font color="yellow">' + words + " " + '</font>'
                www.append(words_pronoun)
            else:
                words_ori = " "+ words +" "
                www.append(words_ori)
        
        remaked_sentence = "".join(www)
        print("---------------------------------分割线---------------------------")    
        print('标记句子',index, remaked_sentence)

    写的很繁琐,但是还是做出来了

    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用