По существу, чтобы перейти от foo\tbar\tbaz
на каждой строке ввода в 'bar'('foo', 'baz').
Возьмите три вкладки разделены маркеры и сделать Пролог «факт»
Если какой-либо из маркеров содержит апостроф, она должна быть замаскирована обратной косой чертой :
don't
->'don\'t'
Деталь:
у меня есть файл, полный 'полуструктурированная' компонента предложения формы:
the grand hall of the hong kong convention attend by some # guests
principal representatives of both countries seat on the central dais
representing china be mr jiang
britain be hrh
the principal representatives be more than # distinguished guests
hong kong end with the playing of the british national anthem
this follow at the stroke of midnight
both countries take part in the ceremony
the ceremony start at about # pm
the ceremony end about # am
# royal hong kong police officers lower the british hong kong flag
another # raise the sar flag
the # leave for the royal yacht britannia
the handover of hong kong hold by the chinese and british governments
the world cast eye on hong kong
the # governments hold on schedule
this be festival for the chinese nation
july # , # go in the annals of history
the hong kong compatriots become master of this chinese land
hong kong enter era of development
history remember mr deng xiaoping
it be along the course
we resolve the hong kong question
i wish to express thanks to all the personages
both china and britain contribute to the settlement of the hong kong
the world support hong kong 's return
i wish to extend my cordial greetings and best wishes
Как вы можете видеть, они разделены вкладками. То, что я хочу сделать, это создать нормальные определенные положения из этих данных, что делает их, как:
'attend by'('some # guests','the grand hall of the hong kong convention').
'take part in'('the ceremony','both countries').
be('representing china', 'mr jiang').
Таким образом, в данных, как сейчас, есть глагол фраза в середине, которая должна стать основой этого новый конструктор, а затем субъект, на который делается действие, должен быть первым параметром, за которым следует первичный актер.
Надеюсь, что в конечном итоге их можно будет использовать в Prolog.
Я думаю, что не все данные полностью сформированы, поэтому, может быть, я могу просто выбросить это.
Я предполагаю, что есть какой-то причудливый сценарий perl или регулярное выражение, sed, тип операции, который может достичь этого наиболее эффективно. Мне нужно выполнить это в массивном файле, поэтому я ищу оптимизацию для эффективности, поэтому я его представляю здесь.
ли случайно, что 'be' не в кавычках, или должны лексемы, которые содержат не пробелы без кавычек? – Wintermute
aha, хорошее наблюдение, я не знаю, как вы думаете? возможно, для непрерывности все должно быть указано? –