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