Теперь я пытаюсь использовать gensim Phrases
, чтобы выучить фразу / специальное значение на основе моего собственного корпуса.
Предположим, у меня есть корпус, связанный с маркой автомобиля, путем удаления знаки препинания и стоп-слов , , ставящие токенизацию предложения , например:
sent1 = 'aston martin is a car brand'
sent2 = 'audi is a car brand'
sent3 = 'bmw is a car brand'
...
Таким образом, я хотел бы использовать gensim Phrases
, чтобы учиться так, чтобы вывод выглядит так:
from gensim.models import Phrases
sents = [sent1, sent2, sent3, ...]
sents_stream = [sent.split() for sent in sents]
bigram = Phrases(sents_stream)
for sent in sents:
print(bigram [sent])
# Ouput should be like:
['aston_martin', 'car', 'brand']
['audi', 'car', 'brand']
['bmw', 'car', 'brand']
...
Однако, если много предложений, которые имеют много знаков препинания:
sent1 = 'aston martin is a car brand'
sent2 = 'audi is a car brand'
sent3 = 'bmw is a car brand'
sent4 = 'jaguar, aston martin, mini cooper are british car brand'
sent5 = 'In all brand, I love jaguar, aston martin and mini cooper'
...
Тогда вывод будет выглядеть так:
from gensim.models import Phrases
sents = [sent1, sent2, sent3, sent4, sent5, ...]
sents_stream = [sent.split() for sent in sents]
bigram = Phrases(sents_stream)
for sent in sents:
print(bigram [sent])
# Ouput should be like:
['aston', 'martin', 'car', 'brand']
['audi', 'car', 'brand']
['bmw', 'car', 'brand']
['jaguar', 'aston', 'martin_mini', 'cooper', 'british', 'car', 'brand']
['all', 'brand', 'love', 'jaguar', 'aston', 'martin_mini', 'cooper']
...
В этом случае, как я должен обрабатывать предложение с большим количеством знаков препинания, чтобы предотвратить случай martin_mini
и сделать вывод похожим на:
['aston', 'martin', 'car', 'brand']
['audi', 'car', 'brand']
['bmw', 'car', 'brand']
['jaguar', 'aston_martin', 'mini_cooper', 'british', 'car', 'brand'] # Change
['all', 'brand', 'love', 'jaguar', 'aston_martin', 'mini_cooper'] # Change
...
Большое спасибо за помощь!