Что нового

[Данные, строки] Выделить "метки" из текста.

vaf

Новичок
Сообщения
186
Репутация
2
Версия AutoIt:3.3.6.1

Описание:
Доброго всем времени суток. Если кратко - нужна функция на входе которой был бы любой текст, а на выходе "мета теги", т.е. несколько слов через запятую (можно не в массиве, а в строке через запятую, так легче), о чем данный текст.
Какая у меня задумка.

Занести в массив все слова данного текста, подсчитать частоту повторения каждого слова, самые частые и будут тегами. тут одна проблема - слова склоняются. Т.е. к примеру наш текст в основном изобилует словами "компьютер", "компьютеров", "компьютерный". Слова разные, но тег один "компьютер", что я придумал. от слов в массиве отрезать по два символа справа, т.е. получится "компьют", "компьютер", "компьютерн" и искать входжения самого маленького по длине слова с большими по длине. Чтобы не заморачиваться, можно отсортировать массив по длине слов от меньшего к большему и искать вхождения меньших в большие.
получится примерно так

компьют
компьютер
компьютерн

тег будет компьют. Да и вхождения нужно искать не в любой части слова, а сначала, а то получится что "мобиль" будет иметь входжение в слово "автомобиль"

Примечания:
P.S. чтобы не анализировать такие слова как "как", "из", "за", "нас" "быть" из массива удалить все слова с длиной менее 6 знаков.

Ну что - кто возьмется ? Я подобную функцию составил, но работает она как то криво, может кто напишет грамотней ? Вот пример.

Код:
#include <String.au3>
#include <Array.au3>
#include <File.au3>

$1 = "ВОСПИТАНИЕ ГЛАЗАМИ РЕБЕНКА И РОДИТЕЛЕЙ."
$2 = "Что на самом деле чувствует ребенок, когда родители недовольны его поступком, без желания понять его мотивы?

Мать оставила в комнате пятилетнюю дочь и пошла на кухню, чтобы что-то там сделать. Дочка вполне мирно играла в своем углу. Через некоторое время мать из кухни слышит, как в комнате что-то падает и разбивается. С ужасом она понимает, что это разбилась ее любимая ваза, которая была ей особенно дорога. Она бежит в комнату и убеждается, что не ошиблась.

Как поступает большинство матерей в таких ситуациях? Да, да – шлепок с разворота по мягкому месту. Крики, крики, крики… Кричит и мать и ребенок, которому больно и обидно.
Давайте проанализируем позицию ребенка. Что управляло поведением девочки? Зачем она потянулась к вазе?

Мы можем предположить самые разные мотивы: захотела помочь маме и решила протереть ее тряпкой; ее заинтересовал какой-то необычный блик на вазе (любопытство); подумала, как может применить вазу в своей игре (мотив творчества); у нее возникло желание доставить маме радость, и поэтому она захотела поставить в вазу цветок. 

Допустим, девочкой двигало желание помочь маме. Вполне возможно, что это желание у нее возникло первый раз. И что? Она не очень грамотно реализовала свое желание, в результате чего навлекла на себя наказание. Как вам кажется, за что она была наказана?
Правильно, за желание помочь. И именно так это будет воспринимать ребенок. На подсознательном уровне у него отложится, что желание оказать помощь другому опасно, так как оно может привести к наказанию. Захочет ли эта девочка в дальнейшем помогать матери? Как вам кажется?

Может быть и захочет. Но вместе с желанием помочь к ней будет приходить также и страх, который закрепился в подсознании после случившегося эпизода. И этот страх станет блокировать желание помочь. А мать будет мучить всех вопросом, почему ее дочь ни в чем ей не помогает.

Изучаем ситуацию дальше. Возможно, девочкой двигало любопытство, интерес к познанию мира. Пришла мать и наказала ее за это желание. В результате боль и обида вошли в подсознание ребенка. Так формируется пассивность ребенка. В дальнейшем он будет очень осторожен в своих попытках самостоятельно разобраться в чем-то. Страх и обида связались внутри с любопытством и интересом познавать новое. И они будут блокировать появление данных мотивов.
А может быть, девочкой двигал мотив творчества? Она хотела как-то применить эту вазу в своей игре? Всё то же самое. В ответ на эти свои желания она получила определенные «воспитательные действия» со стороны матери. В итоге желание творческого проявления личности связались в подсознании со страхом и обидой. В результате мы видим ребенка, который боится проявлять себя в мире. Когда он вырастет, то будет очень сильно зависеть от мнения других. Он будет жить так, как живут все, одеваться в то, во что одеваются все, говорить о том, о чем говорят все.

Последний мотив, который мы отметили, был связан с желанием обрадовать мать. Получив наказание, девочка следующий раз будет осторожнее в проявлении своих чувств. Так формируется отчужденность и дистанция в отношениях.

Ребенок узнает себя через РЕАКЦИЮ РОДИТЕЛЕЙ на его поступки. И именно от нас зависит, с каким мнением о себе пойдет дальше по жизни.

Поэтому не так важны ошибки, которые совершают дети, а важно то, чему они учатся на их примере.

(На основе статьи О.Гадецкого Искусство воспитания)"

MsgBox (4096, "", MetaTag($1,$2))

Func MetaTag($mPost, $mText) ; Функция для определения мета тегов. На входе "Название статьи", "Текст статьи". На выходе теги через запятую.

$uTemp = StringRegExp('aaaaaa ' & $mPost, '([a-zA-Zа-яА-ЯёЁ]{5,})', 3) ; Заголовки
$iTemp = StringRegExp('aaaaaa ' & $mText, '([а-яА-ЯёЁ]{5,})', 3) ; Текст

;_ArrayDisplay ($iTemp, UBound($iTemp)-1)
;_ArrayDisplay ($uTemp, UBound($uTemp)-1)

_ArrayTrim ($iTemp, 2, 2) ; Удаляем по два символа справа

$TagTemp = ""

If @error Then Return $TagTemp

For $ux = 0 To UBound($uTemp) - 1
   $nn = 0
   For $ix = 0 To UBound($iTemp) - 1
	  ;MsgBox (4096, "", $uTemp[$ux] & "=" & $iTemp[$ix])
	  If StringInStr (" " & $uTemp[$ux], " " & $iTemp[$ix]) <> 0 Then
		 $nn+=1
		 ;MsgBox (4096, $nn, $uTemp[$ux] & "=" & $iTemp[$ix])
	  EndIf
   Next
   If  $nn >=4 Then $TagTemp = $TagTemp & $uTemp[$ux] & ", "; MsgBox (4096, $nn, $uTemp[$ux])
Next

Return $TagTemp

EndFunc
 
Верх