在Python中拆分列表并删除相应的元素

在Python中拆分列表并删除相应的元素,python,list,nlp,concatenation,Python,List,Nlp,Concatenation,我有一个词性标记词列表(每个元素的格式为“word | tag”),我试图找到一种方法在删除某个“word”后删除相应的“tag”。更具体地说,我的算法只能处理每个元素的“word”部分,所以我首先拆分当前的“word”|“tag”将列表分为两个单独的单词和标记列表。在我从单词列表中删除某些不必要的单词之后,我想连接相应的标记。如何有效地从不同的列表中删除相应的标记?还是有更好的方法?最初我尝试用标记的单词运行我的清理算法,但找不到忽略每个单词的标记的方法 通过显示我的代码,我的问题可能会更清楚

我有一个词性标记词列表(每个元素的格式为“word | tag”),我试图找到一种方法在删除某个“word”后删除相应的“tag”。更具体地说,我的算法只能处理每个元素的“word”部分,所以我首先拆分当前的“word”|“tag”将列表分为两个单独的单词和标记列表。在我从单词列表中删除某些不必要的单词之后,我想连接相应的标记。如何有效地从不同的列表中删除相应的标记?还是有更好的方法?最初我尝试用标记的单词运行我的清理算法,但找不到忽略每个单词的标记的方法

通过显示我的代码,我的问题可能会更清楚:

my_list = ['I|PN', 'am|V', 'very|ADV', 'happy|ADJ']

tags = []
words = []
for i, x in enumerate(my_list):
    front, mid, end = x.partition('|')
    words.append(front)
    tags.append(mid+end)
当前输出(通过清理算法运行单词列表后):

显然,我不能再按元素连接这些列表,因为我没有从删除的单词中删除相应的标记

期望输出:

words = ['I', 'very', 'happy']
tags = ['PN', 'ADV', 'ADJ']

如何实现上述输出?

我建议您采用以下方法:

  • 将输入拆分为(单词、标记)元组
  • 根据需要筛选元组列表
  • 将剩余的元组列表转换为两个单词/标记列表
  • 以下是一个未经测试的实现:

    word_list = ['I|PN', 'am|V', 'very|ADV', 'happy|ADJ']
    
    def my_word_filter(pair):
        word, tag = pair
        # ... your word removal logic here. Return True if the word is OK,
        # or false if you want it deleted. For example:
        return word != 'am'
    
    word_pairs = filter(my_word_filter, [w.split('|') for w in word_list])
    words, tags = zip(*word_pairs)
    
    # Now do whatever you want from the corresponding lists of words, tags
    

    我建议您遵循以下方法:

  • 将输入拆分为(单词、标记)元组
  • 根据需要筛选元组列表
  • 将剩余的元组列表转换为两个单词/标记列表
  • 以下是一个未经测试的实现:

    word_list = ['I|PN', 'am|V', 'very|ADV', 'happy|ADJ']
    
    def my_word_filter(pair):
        word, tag = pair
        # ... your word removal logic here. Return True if the word is OK,
        # or false if you want it deleted. For example:
        return word != 'am'
    
    word_pairs = filter(my_word_filter, [w.split('|') for w in word_list])
    words, tags = zip(*word_pairs)
    
    # Now do whatever you want from the corresponding lists of words, tags
    

    为什么不试试python字典呢

    my_list={"I":"PN","am":"V","very":"ADV","happy":"ADJ"}
    del my_list["am"]
    print(my_list)
    
    输出:

    my_list={"I":"PN","very":"ADV","happy":"ADJ"}
    

    为什么不试试python字典呢

    my_list={"I":"PN","am":"V","very":"ADV","happy":"ADJ"}
    del my_list["am"]
    print(my_list)
    
    输出:

    my_list={"I":"PN","very":"ADV","happy":"ADJ"}
    

    单词清理算法可以处理单词/标记对(仅使用单词)并清理对。在创建列表之后(或者不创建列表:在现代语言中,绝不按索引关联数据,这不是FORTRAN),单词清理算法可以处理单词/标记对(仅使用单词)并清理对。然后创建列表(或者不创建列表:永远不要在现代语言上按索引关联数据,这不是FORTRAN)这将不起作用,因为它会丢失排序信息,并且当同一个单词在一个句子中出现两次时会出现问题。这将不起作用,因为它会丢失排序信息,并且当同一个单词在一个句子中出现两次时会出现问题。