maison
Top.Mail.Ru Yandeks.Metrika
Forum: "Autre";
Archive actuelle: 2014.01.19;
Télécharger: [xml.tar.bz2];

vers le bas

jeu de données personnalisé flou Trouver des branches similaires


[ВладОшин] ©   (2013-07-11 14:51) [0]

par exemple
12323 Balustre 01.01.2013 12323 Tchaikovsky 02.01.2013 12323 Abdullah Khan 03.01.2013
il est évident qu'ici [numéro, texte, date]
seule la deuxième ligne est décalée d'un espace et la troisième entre «texte, date» est inférieure d'un espace par rapport aux deux autres et la ligne est double, séparée par un espace

mais: une personne va comprendre. S'il existe un format de position spécifié (mais ce l'est), ma classe crée une table en mémoire à partir de TClientDataSet, elle est en train de pelleter, le résultat.

Des idées sur la façon de faire comprendre un ordinateur froissé?

Je pense que c'est une tentative:
1. Vous devez d'abord diviser en colonnes. Nous croyons que partout le texte.
1.1. S'il y a plus d'un espace dans une ligne (ou un caractère spécial (tabulation, etc.)), nous le considérons comme un séparateur.
1.2. Nous comptons le nombre de colonnes obtenues pour chaque ligne. Nous acceptons que le nombre de colonnes dans le texte soit égal au minimum de celles reçues.
1.3. Nous commençons à remplacer tous les doubles espaces des lignes comportant plus de séparateurs que le minimum. Jusqu'à ce qu'il n'y ait pas de séparateurs partout pareil. Nous considérons cela comme un ensemble de données, alors qu'il est entièrement textuel.
2. Comprenez que ce n'est pas du texte
2.1. Essayez immédiatement de déclarer à la colonne un numéro, une date, etc. Il s'est avéré - acclamations, victoire, rames de sushi.
2.2. Dans la ligne où il y a plusieurs (nombre / nombre total> 0.5), caractères "0" - "9", remplacez les caractères "0" - "9" par décimalseparator (timeseparator) et essayez de déclarer la colonne sous la forme d'un nombre, d'une date, etc.
Il s'est avéré - acclamations, victoire, rames de sushi.

avoir quelque chose à conseiller?



брат Птибурдукова   (2013-07-11 14:56) [1]


> Avez-vous des idées pour fabriquer un ordinateur soucieux de comprendre?
Gee, j'ai écrit cela lors d'une des interviews ...



[ВладОшин] ©   (2013-07-11 15:09) [2]

Eh bien, j'ai juste décidé de faire

Presque comme cela, en fait, après un petit problème dans l’envoi et des erreurs dans la conversion automatique. Mais comment y suis-je entré? Je ne me souviens de rien du tout, de ce qu’il y a et où. S'il y avait un cours «intellectuel» - cela fonctionnerait. Ils envoyaient avec tous les espaces doublés. Et sous le contrat - calcul de position. Il serait nécessaire de traiter, juste d'envoyer une lettre, disent-ils, alors une chose inattendue s'est produite, faites attention. Eh bien, il ne resterait plus qu'à se disputer avec l'expéditeur :) - la chose est faite, et sans souvenirs de ce qui est là, où et où.



[ВладОшин] ©   (2013-07-11 15:10) [3]

>> Le frère de Ptiburdukov (11.07.13 14: 56) [1]
Au fait, qu'as-tu écrit?



MBo ©   (2013-07-11 15:22) [4]

Cela peut être traité par une machine à états (machine à états).
La séquence d'états pour le troisième exemple:
1. non défini (initial)
2. parmi
3. le nombre est fini
4. dans le texte
5. le texte est fini
6. ça ne fait rien
7 (5). le texte est fini
8. en date
9. la ligne est terminée

aux transitions 3-4, 7-8, 8-9, on distingue des parties importantes de sous-chaînes.
Le PS dans une version simple se casse sur Karl 12 (bien que ce soit un enregistrement non canonique)



[ВладОшин] ©   (2013-07-11 15:36) [5]


> MBo © (11.07.13 15: 22) [4]

n'a pas compris ..
>> 12323 Abdullah Khan 03.01.2013
c'était par exemple
Je veux universellement :)
glisser
Tsukukukuk 2323 01.01.2013
Tsukukukuk 2323 01.01.2013

ou
232323 Tsukukukuk 2323 01.01.2013
45454 Tsukukukuk 2323 01.01.2013

et à la sortie - dataset. Comme un homme le comprendrait.

c'est-à-dire Nous ne savons rien du texte à l’avance. Il est impossible de deviner quel champ sera le premier (nombre, texte, etc.).

c'est-à-dire nous lui donnons * .txt, sans préciser où il y a quoi et combien il y en a
il nous le montre (même (dans dbgride, par exemple))

Excel le fait approximativement lorsque vous le définissez par rapport à un fichier de ce type.
Mais Excell commence à demander s’il existe un séparateur, lequel, ou tracez une ligne séparant les colonnes. Oui, qui sont-ils comme vous, indiquez.

C'est tout ce qu'une personne comprend. Je veux que le programme comprenne. Quelque chose est devenu intéressant :)



Kerk ©   (2013-07-11 15:38) [6]

Ici, vous avez besoin d’une simple expression rationnelle banale. Bien sûr, la machine à états peut aussi être construite, mais pourquoi le faire à la main si vous pouvez écrire une simple expression rationnelle.



Kerk ©   (2013-07-11 15:38) [7]


> [Vladoshin] © (11.07.13 15: 36) [5]

Je n'ai pas vu cela quand [6] a écrit.
L'intelligence artificielle vous aidera ici. Ou dans les cas extrêmes, un certain ensemble d'heuristiques.



Компромисс1 ©   (2013-07-11 16:10) [8]


> Quelque chose est devenu intéressant :)


Alors viens avec toi-même. Quel intérêt peut-il y avoir à coder une idée toute faite suggérée par le forum? :)



MBo ©   (2013-07-11 16:19) [9]

le voici:
> Tsukukukuk 2323 01.01.2013
en utilisant une machine d'état peut être traitée

et ceci:
> 232323 Tsukukukuk 2323 01.01.2013
et une personne ne peut pas être corrélée sans ambiguïté avec un échantillon de trois colonnes



MBo ©   (2013-07-11 16:21) [10]

À propos, cherchez comment les analyseurs syntaxiques d'adresses écrites sous forme arbitraire se débrouillent (et se débrouillent) - une tâche similaire



[ВладОшин] ©   (2013-07-11 16:25) [11]


> MBo © (11.07.13 16: 21) [10]

Oui


> et ceci:
>> 232323 Tsukukukuk 2323 01.01.2013
> et une personne ne peut pas être corrélée sans ambiguïté avec un trois colonnes
> échantillon

à droite, car il y a une colonne xnum d :)
mais le programme lui-même doit prendre cette décision


> quand vous venez avec. Quel pourrait être l'intérêt de coder
> des idées toutes faites inspirées par le forum? :)

oui tout à coup un vélo :)
Et alors - vous regardez, peut-être que je vais le mettre dans le garde-manger, si je le fais



брат Птибурдукова   (2013-07-11 16:27) [12]


> au fait, qu'a-t-il écrit?
Pensez-vous que je m'en souvienne? Je me souviens que j’ai estimé le coût de la main-d’œuvre à une heure et que j’y ai investi… (c’est un indice)

En fait, j'ai mis en surbrillance les «colonnes», mis en évidence la valeur la plus large de la colonne et tout développé sous cette valeur. (cependant, les jeux de données n’apparaissaient pas en moi, stupidement stringlist)



картман ©   (2013-07-11 16:43) [13]


> [Vladoshin] © (11.07.13 15: 36) [5]

http://www.basegroup.ru/library/cleaning/addresses/

Pour les adresses en particulier, cette approche ne m’a pas semblé fructueuse, mais je pense que votre tâche en vaut la peine.



MBo ©   (2013-07-11 16:47) [14]

> mais le programme lui-même doit prendre cette décision
Oui, demain elle décidera que le violoniste n’est plus nécessaire, et Skynet construira



[ВладОшин] ©   (2013-07-11 16:54) [15]


> Cartman C (11.07.13 16: 43) [13]

Je sais ces ..
J'ai téléchargé à partir d'eux "NeuralBase - une bibliothèque de composants pour Delphi"
Cela n’inspire pas confiance, compile avec des allusions et des avertissements, de plus, il peut être non initialisé. Il y avait même une tentative d'application, mais conduit à AV.

Bien que la théorie semble être décrite de manière harmonieuse (scopyrastine? :))
(Je ne parle pas d'adresses, mais en général, de tous les articles. Quand j'ai découvert quel genre de fruit était le "neurone" et avec quoi il était).



[ВладОшин] ©   (2013-07-11 16:57) [16]


> MBo © (11.07.13 16: 47) [14]

pas vraiment.
Doit être 2 (ou plus). "Décide toi-même" et "laisse-moi te dire"
dans la seconde vous pouvez spécifier
combien de colonnes sont attendues
leurs types sont possibles
etc
Mais le mode "Décidez vous-même" devrait être le même :)



брат Птибурдукова   (2013-07-11 17:13) [17]


> Oui, et demain elle décide que le violoniste n'est pas nécessaire, et Skynet
> construire
Dépêche-toi déjà ...



Dennis I. Komarov ©   (2013-07-11 22:17) [18]


> et à la sortie-dataset. Comme un homme le comprendrait.
>

bla bla bla bogeyman Xnumx paires pour être demain ne viendra pas
Que va dire une personne?



Inovet ©   (2013-07-11 22:19) [19]

> [18] Dennis I. Komarov © (11.07.13 22: 17)
> Que va dire une personne?

Excel devrait dire - colonne de texte 3.



Dennis I. Komarov ©   (2013-07-11 22:25) [20]


> Excel devrait indiquer la colonne de texte-3.

Excel n'est pas un homme ...



имя   (2013-07-11 23:10) [21]

Supprimé par le modérateur



имя   (2013-07-11 23:15) [22]

Supprimé par le modérateur



Аббат Пиккола   (2013-07-12 00:19) [23]

Supprimé par le modérateur



[ВладОшин] ©   (2013-07-12 05:40) [24]


> bla bla bla
> Bogeyman
> Les paires 113 à être
> demain ne viendra pas
>
> Que va dire une personne?

ordures :)



brother ©   (2013-07-12 06:11) [25]

si le format est difficile, alors comme ceci:
1. courir au premier espace - c'est la première colonne garantie
2. nous traitons les données de la colonne, coupons-les de la ligne
3. courir à l'espace suivant et regarder, après lui le caractère suivant est un numéro?
Le caractère 3.1 n'est pas un nombre - passez à autre chose
Numéro de caractère 3.2 - nous sommes donc à la fin de la deuxième colonne
4. nous traitons les données de la colonne (nous nous débarrassons des espaces supplémentaires), nous les coupons de la ligne
5. traiter les données de colonne 3
profit?



brother ©   (2013-07-12 06:13) [26]

ce sont en fait les séparateurs de colonnes ici:
La colonne 1 se termine par un espace
La colonne 2 se termine par un nombre



[ВладОшин] ©   (2013-07-12 06:21) [27]


> brother © (12.07.13 06: 13) [26]

lire plus [0]? :)

-------
> bla bla bla
> Bogeyman
> Les paires 113 à être
> demain ne viendra pas
C’est beaucoup plus intéressant de voir comment la voiture devrait faire ici.
Je pense, ou dans une colonne - les délimiteurs de colonne explicites ne sont pas visibles
ou en 3, où la deuxième ligne du DataSet est nulle (à n'importe quelle position). Tous ds - texte



brother ©   (2013-07-12 11:52) [28]

> ou
> 232323 Tsukukukuk 2323 01.01.2013
> 45454 Tsukukukuk 2323 01.01.2013

puis expliquer comment l’interpréter?



[ВладОшин] ©   (2013-07-12 12:05) [29]


> puis expliquer comment l’interpréter?

ftInteger, ftString, ftInteger, ftDate

(html mange des espaces supplémentaires) ou ftInteger, ftString, ftDate



Anatoly Podgoretsky ©   (2013-07-12 12:28) [30]

> Abbé Piccola (12.07.2013 00: 19: 23) [23]

Ce violoniste n'est pas nécessaire



Dennis I. Komarov ©   (2013-07-12 12:55) [31]


cité1 >> bla bla bla
cité1 >> bogeyman
>> paires 113 à être
quoted1 >> demain ne viendra pas
> Il est beaucoup plus intéressant de voir comment la voiture devrait faire ici
> Je pense, ou dans une colonne - délimiteurs de colonnes explicites
> non visible
> ou en 3, où la deuxième ligne du DataSet est nulle (sur tout
> position). Tous ds - texte

La machine doit agir conformément aux instructions du programmeur, ne la jetez pas :)

Pourquoi pas en deux?
bla bla | bla
ekerny | babai
Paires 113 | être
demain | ne viendra pas



[ВладОшин] ©   (2013-07-12 13:08) [32]


> Pourquoi pas en deux?

parce que le nombre de lignes est divisé en deux (= ligne 1)
moins de trois (= lignes 3)



[ВладОшин] ©   (2013-07-12 13:11) [33]

bien que ..
Oui, 2.
À en juger par l'algorithme de [0].

> 1.2. Nous comptons le nombre de colonnes obtenues pour chaque ligne.
> Nous acceptons que le nombre de colonnes dans le texte est égal au minimum
> de reçu.

Ou vous devez réviser l'algorithme.



brother ©   (2013-07-12 18:32) [34]

signifie qu'il n'y a pas de tz spécifique ...



TUser ©   (2013-07-12 19:33) [35]

Plus précisément, dans ce cas, tout est simple: vous devez trouver le premier et le dernier espace. Ils divisent chaque ligne en colonnes 3, celle du milieu doit être ajustée.

Il est impossible de dire si cela fonctionnera sur toutes les données, et pas seulement sur cet enregistrement. Dans le cas général, bien sûr, vous devez regarder quelles seront les exceptions (comme StringToDate dans la chaîne "12345 votre 01.01.1925", cela ne fonctionnera pas).

Eh bien, en principe, analyser des formats cachés par des gens est généralement désastreux, car l’imagination est inépuisable, oui. Mais en corrigeant diverses erreurs, un pourcentage élevé de précision peut être atteint.



brother ©   (2013-08-02 08:31) [36]

> Ils divisent chaque ligne en colonnes 3

[28] il y a déjà 4



разработтчик   (2013-08-02 11:27) [37]

Supprimé par le modérateur
Note: Maintenant, jours 7



Ega23 ©   (2013-08-02 11:50) [38]

La violation du régime entraîne une augmentation de la durée de l'interdiction.



разработтчик   (2013-08-02 12:06) [39]

est-il possible quatorze ans?



Обычный Порошок   (2013-08-02 12:11) [40]

Auteur, croquez les chiffres et la date.
Après avoir mordu, il ne reste que le deuxième champ.
C'est aussi simple que ça.



брат Птибурдукова   (2013-08-02 12:20) [41]

Si j'ai bien compris, l'auteur ne s'intéresse pas au cas particulier "numéro, chaîne, date", mais à une solution plus générale.



Обычный порошок   (2013-08-02 12:24) [42]

Alors tout le temps plus régulier



Плохиш ©   (2013-08-02 13:42) [43]


> C'est aussi simple que ça.

Et parler?
Et augmenter la réponse en fréquence?



разработчик   (2013-08-02 14:38) [44]

suggérez-vous de parler



Юрий Зотов ©   (2013-08-02 15:14) [45]

Même les habitués ne sont pas nécessaires, pas plus que les analyseurs. Les fonctions de chaîne simples peuvent être supprimées.

1. Nous mordons le nombre (du début de la ligne au premier espace).
2. Nous mordons la date (du dernier espace à la fin de la ligne).
3. Il y a du texte avec des espaces de séparation. Nous lui faisons couper - et tout va bien.



Юртй Зотов   (2013-08-02 15:17) [46]

Ajout à [45].

Par conséquent, si StrToInt (dans 1) ou StrToDate (dans 2) donne une exception, il s'agit d'une violation de format, cette exception est relativement honnête.



Юрий Зотов ©   (2013-08-02 15:24) [47]

Heh ... dans son propre surnom était scellé ... et il ne buvait que du café. Et même sans cognac (hélas!).
: O)



Юрий Зотов ©   (2013-08-02 15:34) [48]

Et plus précisément, comme ceci:

Si StrToInt (dans n.1) lève une exception ou s’il n’ya pas d’espace, le nombre et la date sont absents.

Si StrToDate (dans n.2) lève une exception ou s'il n'y a pas de deuxième espace, la date est manquante.

Si une ligne vide est laissée après l'ajustement, le texte est manquant.



Юрий Зотов ©   (2013-08-02 17:56) [49]

En bref, Vlad - quelque chose est devenu intéressant pour moi. Attrape-le. Reconnaît toutes les colonnes dont vous avez besoin, et dans n'importe quel nombre d'entre elles.

============== DFM =================
objet Form1: TForm1 Gauche = 240 Top = 117 BorderStyle = bsDialog Caption = "Form1" ClientHeight = 301 ClientWidth = 688 Couleur = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = "MS Sans Serif" Font.Style = [] OldCreateOrder = False Position = poDesktopCenter OnCreate = FormCreate PixelsPerInch = 120 TextHeight = 16 objet Panel1: TPanel Gauche = 0 Top = 0 Largeur = 688 Hauteur = 41 Align = alTop TabOrder = 0 objet edSource: TEdit Gauche = 316 Top = 8 Largeur = 121 Hauteur = 24 TabOrder = 0 fin objet btnGo: TButton Gauche = 516 Top = 12 Largeur = 75 Hauteur = 25 Légende = "Go!" Par défaut = true TabOrder = 1 OnClick = btnGoClick fin fin objet Panel2: TPanel Gauche = 0 Top = 41 Largeur = 688 Hauteur = 41 Align = alTop TabOrder = 1 objet edNumber: TEdit Gauche = 92 Top = 12 Largeur = 121 Hauteur = 24 ReadOnly = True TabOrder = 0 fin objet edText: TEdit Gauche = 280 Top = 8 Largeur = 121 Hauteur = 24 ReadOnly = True TabOrder = 1 fin objet edDate: TEdit Gauche = 460 Top = 8 Largeur = 121 Hauteur = 24 ReadOnly = True TabOrder = 2 fin fin fin
============== UNIT =================

unit Unit1;

interface

uses
 SysUtils, Classes, Controls, Forms, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   edSource: TEdit;
   btnGo: TButton;
   Panel2: TPanel;
   edNumber: TEdit;
   edText: TEdit;
   edDate: TEdit;
   procedure FormCreate(Sender: TObject);
   procedure btnGoClick(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Panel1.Height := edSource.Height;
 btnGo.Align := alRight;
 edSource.Align := alClient;
 Panel2.Height := edNumber.Height;
 edNumber.Align := alLeft;
 edDate.Align := alRight;
 edText.Align := alClient;
 ClientHeight := Panel1.Height + Panel2.Height
end;

procedure TForm1.btnGoClick(Sender: TObject);
var
 Source, S: string;
 FirstSpacePos, LastSpacePos, IntDummy: integer;
 DateDummy: TDateTime;
begin
 edNumber.Clear;
 edText.Clear;
 edDate.Clear;
 Source := Trim(edSource.Text);
 if Source = "" then // Нет ни одного столбца
   Exit;
 // Есть по крайней мере один столбец
 FirstSpacePos := Pos(" ", Source);
 if (FirstSpacePos = 0) then // Есть всего один столбец
 begin
   if TryStrToInt(Source, IntDummy) then // Это число
     edNumber.Text := Source
   else
     if TryStrToDate(Source, DateDummy) then // Это дата
       edDate.Text := Source
     else // Это текст
       edText.Text := Source;
   Exit
 end;
 // Есть не один столбец
 LastSpacePos := Length(Source);
 while (LastSpacePos > FirstSpacePos) and (Source[LastSpacePos] <> " ") do
   Dec(LastSpacePos);
 if (LastSpacePos = FirstSpacePos) then // Есть два столбца
 begin
   S := Copy(Source, 1, FirstSpacePos - 1);
   if TryStrToInt(S, IntDummy) then // Первый столбец - число, тогда второй - текст или дата
   begin
     edNumber.Text := S;
     S := Copy(Source, LastSpacePos + 1, Length(Source) - LastSpacePos);
     if TryStrToDate(S, DateDummy) then // Второй столбец - дата
       edDate.Text := S
     else // Второй столбец - текст
       edText.Text := S;
   end
   else // Первый столбец - не число, тогда он - текст, а второй столбец должен быть датой
     begin
       edText.Text := S;
       S := Copy(Source, LastSpacePos + 1, Length(Source) - LastSpacePos);
       if TryStrToDate(S, DateDummy) then // Второй столбец - дата
         edDate.Text := S
       else // Второй столбец - не дата
         raise EParserError.Create("Если первый столбец - текст, то второй должен быть датой")
     end;
   Exit
 end;
 // Есть три столбца - число, текст и дата
 S := Copy(Source, 1, FirstSpacePos - 1);
 if TryStrToInt(S, IntDummy) then // Первый столбец - число
   edNumber.Text := S
 else // Первый столбец - не число
   raise EParserError.Create("Первый столбец должен быть числом");
 S := Copy(Source, LastSpacePos + 1, Length(Source) - LastSpacePos);
 if TryStrToDate(S, DateDummy) then // Третий столбец - дата
   edDate.Text := S
 else // Третий столбец - не дата
   raise EParserError.Create("Третий столбец должен быть датой");
 edText.Text  := Trim(Copy(Source, FirstSpacePos + 1, LastSpacePos - FirstSpacePos - 1));
end;
end.



[ВладОшин] ©   (2013-08-02 19:59) [50]

>> raise EParserError.Create ("la première colonne n'est pas un nombre ..

C'est pourquoi? :)

ps
Bien sûr, je comprends que je ressemble souvent à un idiot ici, mais pas dans la même mesure.

Encore une fois (Oui, encore, et beaucoup plus - beaucoup ..)
Nous ne savons rien des colonnes.
Le premier peut être n'importe lequel.
Nous (les gens) lisons le texte et comprenons où se trouve la colonne, de quel type et combien il y en a.

ps2
Compter les espaces n'est pas une option. Une colonne de type texte peut avoir des espaces en tant que données.
01,01,2013 "Offre avec espace" 65
01,01,2013 "Offre sans espace" 65
01,01,2013 "Offre avec espace" 65
voici la colonne xnumx.
Date, chaîne, nombre.

01,01,2013 "Offre avec espace" 65 Tsutsutsutsutsu
01,01,2013 "Proposition sans espace" 65 tsutsutsutsu
01,01,2013 "Offre avec espace" 65 Tsutsutsutsutsu
Ici xnumx
Date, chaîne, nombre, chaîne

Threat3
Nous sommes généralement
en général
à tous
ne peut pas deviner combien de colonnes
comment se séparent-ils
dans quel ordre sont

L'homme voit ça.
Comment



[ВладОшин] ©   (2013-08-02 20:23) [51]


> 01,01,2013 "Offre avec un espace" 65 Tsutsutsutsutsu
> 01,01,2013 "Proposition sans espace" 65 tsutsutsutsu
> 01,01,2013 "Offre avec un espace" 65 Tsutsutsutsutsu

par exemple

l'espace dans la ligne ici est compensé par les nombreux espaces entre les colonnes
Les onglets peuvent encore donner quelques espaces (visuellement)

En outre, l'inductance fonctionne.
Nous examinons l’apparence des lignes précédente et suivante - et nous concluons

ps

C'est ce que je pensais.
si vous appliquez «l’effet de strabisme». Si vous plissez les yeux, cela paraît flou, mais l’emplacement des données est clair.

Comment dire ça :)
type
- Flou - Netteté -
plusieurs fois de suite

c'est-à-dire comme si tout était entraîné dans une matrice,
lettre - point noir, espace (onglet) - blanc
Ensuite, nous ajoutons de la couleur à chaque point de la matrice, mais il en ajoute plus à côté des points noirs. Et puis, moins. Mais c’est également vrai qu’à côté des Blancs, il est de plus en plus réduit.

donc
tous les petits creux (espaces dans les lignes) "grandissent ensemble"
Et toutes les saillies (gras)
Phrase 01,01,2013 avec espace
Xnumx"Pr"pas d'espace"
Phrase 01,01,2013 avec espace
- "s'évaporer"

voooot ..

Ok, supprimez, s'il vous plaît :)
Encore une fois, quelqu'un ne comprendra pas, mais j'en ai marre d'expliquer :))



Anatoly Podgoretsky ©   (2013-08-02 20:53) [52]

> [VladOshin] (02.08.2013 19: 59: 50) [50]

"Le voit."
yeux



Алканавт расправил плечи   (2013-08-02 21:08) [53]


> [Vladoshin] © (02.08.13 20: 23) [51]
et peut-être deux espaces - la fin de la colonne? et toutes les affaires ...



turbouser ©   (2013-08-02 21:37) [54]


> [VladOshin] ©


>
> Une personne voit cela.


Vous êtes un homme Alors demandez-vous - comment?!?!
chut
Ils cherchent une réponse depuis très longtemps.



Юрий Зотов ©   (2013-08-02 22:10) [55]

> [Vladoshin] © (02.08.13 19: 59) [50]

Je suis parti du fait qu'il y a trois colonnes qui suivent dans l'ordre "numéro, texte, date" et séparées par au moins un espace. N'importe laquelle de ces colonnes dans n'importe quelle quantité peut être ignorée. S'il y a plus de trois colonnes, il en reste trois: le premier est un nombre, la dernière est une date et tout le reste est du texte (à l'exception des espaces - séparateurs de colonnes). Le texte peut contenir des espaces internes, un numéro et une date - peut ne pas en contenir.

Ainsi, les espaces ne sont comptés nulle part et les positions des premier et dernier espaces sont calculées pour déterminer le nombre de colonnes - l'interprétation de la chaîne d'entrée dépend de celui-ci. Plus loin donc:

1) Il n'y a pas de colonnes (les trois sont manquantes) - exit

2) Il n'y a qu'une seule colonne (deux sont manquantes) - elle peut être de n'importe quel type et le type est déterminé par une tentative de conversion en nombre et, le cas échéant, en une date. Si les deux tentatives échouent, alors ceci est le texte.

3). Il y a deux colonnes (une est manquante):
 
3a) Si le premier est un nombre, nous essayons de convertir le second en date. S'il est adopté, il s'agit de la date (et le texte est omis); sinon, il s'agit du texte (et la date est omis).

3b) Si le premier n'est pas un nombre, il s'agit du texte et le second doit être une date.

4). Il y a trois colonnes ou plus: la première est un nombre, la dernière est une date et tout le reste est du texte.

==============

PS

Si vous voulez que le programme détermine un type arbitraire de colonnes suivant dans un ordre aléatoire, il s'agit de l'IA. Parce que ce n'est pas formalisé. Même Yoksel ne le fait pas - à la moindre difficulté, il considère que le type est string.



Юрий Зотов ©   (2013-08-02 22:13) [56]

Mais si vous obtenez la ligne d'origine de la base de données en concaténant ses champs, le type de chaque colonne peut être obtenu à partir des métadonnées.



brother ©   (2013-08-02 22:21) [57]

> La réponse est très longtemps recherchée

un algorithme?



turbouser ©   (2013-08-02 23:48) [58]


> brother © (02.08.13 22: 21) [57]
>
Cité1 >> La réponse est très longtemps recherchée
>
> algorithme?

AI.



Юрий Зотов ©   (2013-08-03 09:57) [59]

> L'homme voit ça

Dans des cas évidents, oui. Dans le non évident - non.

123 Semen Semenovich Gorbunkov 10-11-12

Combien de champs sont 1, 2, 3, 4 ou 5?
Le dernier champ est-il une date ou un texte?
Si la date est, sous quel format (c’est-à-dire où se trouve le jour et l’année)?

Même une personne ne peut pas répondre à ces questions.



Anatoly Podgoretsky ©   (2013-08-03 10:33) [60]

Champs 5 + calcul arithmétique = -13
Les yeux ne mentent pas



[ВладОшин] ©   (2013-08-03 10:54) [61]


> Yuri Zotov © (03.08.13 09: 57) [59]
Cité1 >> l'homme voit cela
> Dans des cas évidents, oui. Dans le non évident - non.

Simplifier
Jeter le non évident.
Si une personne ne comprend pas, l'ordinateur est impuissant. Même s'il y avait un "SILEN" - qui le vérifiera :)


> Alkanaut au carré des épaules (02.08.13 21: 08) [53]
>> [VladOshin] © (02.08.13 20: 23) [51]
> et peut-être deux espaces - la fin de la colonne? et toutes les affaires ...

C'est exactement ce qu'il a fait.
C'était b.
Mais il arrive que le texte (colonne de type chaîne) contienne des espaces 2. La séparation dans les espaces 4 compense déjà cela pour la perception de l'œil. De plus, dans 1, un espace (un délimiteur est inférieur au texte!) Sur un grand ensemble de lignes donne également une compréhension correcte du point de vue visuel (induction)

Exemple SW
>> 123 Semen Semenovich Gorbunkov 10-11-12
pas clair.

terminer les données
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12

oeil dit qu'il y a des colonnes xnumx
nombre et xnumx fois la chaîne. (4é est peut-être une date, mais vous comprendrez, bordel, c’est une ligne)

>> Même Jöksel ne le fait pas - à la moindre difficulté, il considère le type comme une chaîne
Bien, d'accord.
Je veux juste ajouter plus d'options de décodage.

Mais ce n’est pas tout: Excel ne définit toujours pas correctement les colonnes (pas toujours correctement).

I.e. total, il s'avère que excell, oui
mais vous pouvez passer plus de temps à identifier les colonnes et leur type.



Обычный Порошок   (2013-08-03 11:09) [62]

savoir ce qui devrait être dans le fichier, mais ne pas connaître l’ordre des colonnes et des formats - c’est un peu plus difficile à charger que lorsque vous savez tout.
juste un petit peu.

mais ne sachant pas ce qu’il ya dans le fichier, la tâche n’est pas si compliquée. il vous suffit de calculer le séparateur de champ.



Anatoly Podgoretsky ©   (2013-08-03 14:36) [63]

> Poudre normale (03.08.2013 11: 09: 02) [62]

séparateur de champ peut
être simultanément
séparateur de ligne



Обычный Порошок   (2013-08-03 15:11) [64]

oui vraiment?
s'il existe un séparateur de ligne entre les champs en tant que séparateur, cela signifie que nous avons un fichier dans lequel chaque ligne a un seul champ.



[ВладОшин] ©   (2013-08-05 10:54) [65]

>> Poudre conventionnelle
Je suis d'accord

> il vous suffit de calculer le séparateur de champs

C'est le problème.

chut
1. La méthode du flou est longue.
2.
Il y a une autre idée .. Soit des données:
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12
123 Semen Semenovich Gorbunkov 10-11-12

marteler dans la matrice les coordonnées des débuts des "mots"
123 commence à la position 0
Sperme de la position de 5
etc

Matrice des nombres
0 5 N1 ..
0 5 N2 ..

C'est la coordonnée X
Obtenir la coordonnée Y égale au numéro de ligne
Nous obtenons la matrice de points.

(0,0) (5,0) (N1,0) ..
(0,1) (5,1) (N2,1) ..

Zachacha trace des lignes verticales coupant le plus de points possible.



Обычный порошок   (2013-08-05 10:59) [66]

quel problème?
faire quelques hypothèses sur les séparateurs.
essayez-les à tour de rôle.
choisissez celui dans lequel le nombre maximum de lignes a le même nombre de champs.



[ВладОшин] ©   (2013-08-05 11:13) [67]


> faire quelques hypothèses sur les séparateurs.
> essayez-les à tour de rôle.
> choisissez celui avec le nombre maximum de lignes
> avoir le même nombre de champs.


de manière équivalente, comme

> Obtenez la matrice de points.
>
> (0,0) (5,0) (N1,0) ..
> (0,1) (5,1) (N2,1) ..
>
> Zachacha dessine des lignes verticales se coupant autant que possible
> plus de points.



[ВладОшин] ©   (2013-08-05 11:24) [68]


Cité1 >> Zachacha trace des droites verticales se croisant autant que possible
>> plus de points.

en essayant de minimiser leur nombre
sous ce que vous devez penser à ce que devrait signifier

car
1.a
tracez des lignes verticales coupant le plus de points possible. - Tous les points sont possibles. Nous avons plus de lignes 9000. Il se peut que le point ait sa propre ligne
1.b
>> essayant de minimiser leur nombre
= 0 direct. Moins est impossible :)

Pourquoi direct? Ici, "l'inductance" est considérée. I.e. ce qui était et ce qui sera, c'est-à-dire en tant que personne détermine qu'il s'agit d'un changement aléatoire, et donc - tout devrait être et c'était avant cela exactement.



[ВладОшин] ©   (2013-08-05 11:40) [69]


> essayant de minimiser leur nombre

si simple! - si moins de N% de points sur la ligne - faux séparateur



[ВладОшин] ©   (2013-08-05 11:42) [70]

zut ..
cependant, voici un exemple - ne traitera pas
Tsutsutsu Tsutsutsutsu Ukukuk Tsutsutsu Tsutsutsutsu Ukukuk Tsutsutsu Tsutsutsutsu Ukukuk Tsutsutsu Tsutsutsutsu Ukukuk Tsutsutsu Tsutsutsutsu Ukukuk Tsutsutsu Tsutsutsutsu Ukukuk
bien qu'une personne voit qu'il y a une colonne xnumx



[ВладОшин] ©   (2013-08-05 11:45) [71]

bien que ..
à cause de ce qu'il voit? en raison des nombreuses lacunes entre
dans la copie des données, vous devez supprimer les espaces d'un maximum de 1 et tracer des lignes sur ces données.

Maintenant ça pourrait marcher



Обычный порошок   (2013-08-05 12:14) [72]

quelles sont les lignes verticales?
quelle vision?

Vous écrivez import ou système de contrôle de la planète?



turbouser ©   (2013-08-05 12:44) [73]


> [Vladoshin] © (05.08.13 11: 45) [71]

Ou peut-être deux colonnes? Les données sont des espaces par exemple. Ou "Tsutsutsu"



[ВладОшин] ©   (2013-08-05 13:07) [74]


> turbouser © (05.08.13 12: 44) [73]
Ou peut-être deux colonnes?

non, 3 :)
Comment pouvez-vous voir 2 ici?
trois. Chaque deuxième terme est décalé d'un symbole.


> Poudre conventionnelle (05.08.13 12: 14) [72]
> écrivez-vous import ou système de contrôle de la planète?

J'écris la classe de reconnaissance la plus universelle possible.
pour le plaisir.

Appliqué "il était nécessaire hier" a longtemps été écrit, utilisé.
Je viens de remplacer Tab par des espaces 3, puis s'il y a plus que des espaces 2 dans une ligne, un séparateur. 99.90% des fichiers couverts
Mais il y a quelques fichiers (de plus de 9000) qui sont cassés. Ils ne sont pas compris et nécessitent des corrections préliminaires. Pas effrayant, mais désagréable.

ps
Par exemple, dans l’un d’eux au centre, il ya une certaine ligne TOTAL
c.-à-
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
total: 45
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
Tsutsutsu Tsutsutsutsu Ukukuk
(Il s’agit apparemment d’une sorte de programme qui a été créé. Une sorte d’ancien, l’encodage est toujours dosovskaya et le formatage tend à être formaté dans un fichier, ce qui, comme vous pouvez le constater, n’est pas toujours possible)
donc "total" n'est pas non plus nécessaire.
Dans la nouvelle classe que j'ai faite
property MinLenStr: Entier lu FIgnorMinLenStr write FIgnorMinLenStr; // caractère minimum dans str. Si less - string ignore
ignorer de tels ennuis



Pages: 1 2 branche entière

Forum: "Autre";
Archive actuelle: 2014.01.19;
Télécharger: [xml.tar.bz2];

à l'étage









Mémoire: 0.91 MB
Heure: 0.077 c
2-1363761523
Andrey2000
2013-03-20 10:38
2014.01.19
Le bouton ne fonctionne pas


1-1321104977
Yurikon
2011-11-12 17:36
2014.01.19
Génération de vos événements


15-1374986745
novai
2013-07-28 08:45
2014.01.19
aider à choisir la résistance


1-1320150048
vlkxnumx
2011-11-01 15:20
2014.01.19
programmation générale et générale


15-1375037011
Tuser
2013-07-28 22:43
2014.01.19
Windows SUV





afrikaans albanais Arabic arménien azerbaïdjanais basque Biélorusse Bulgare catalan Chinois simplifié) Chinois (traditionnel) croate Tchèque Danois Néerlandais English estonien Filipino Finlandais Français
galicien géorgien Allemand Grecque Créole haïtien hébreu Hindi Hongrois Islandais Indonesian irlandais Italien japonais Coréen letton lituanien macédonien Malay maltais Norvégien
persan Polonais Portugais roumain Russe serbe Slovaque Slovène Espagnol Swahili Suédois Thai turc ukrainien Urdu vietnamien gallois yiddish bengali bosniaque
Cebuano espéranto gujarati Hause hmong Igbo Javanais Kannada Khmer lao latin maori Marathi mongol népalais punjabi somali tamil telugu yoruba
zoulou
Английский Français Allemand Italien Португальский Русский Espagnol