Faits: Faits: A. Dans l'après-midi du 12 juin 2003, une altercation a opposé A._ à sa supérieure hiérarchique directe, B._, dans les locaux de l'entreprise X._, à La Chaux-de-Fonds, à la suite d'un différend professionnel. Les deux protagonistes ont donné des versions divergentes des faits, chacune accusant l'autre de l'avoir agressée physiquement en premier lieu. B._ a déclaré que A._ avait brusquement fait irruption dans son bureau en claquant la porte, alors qu'elle se trouvait avec une collègue, C._, que la jeune femme était très excitée et l'aurait menacée, avant de lui donner deux ou trois coups de poing au visage. Elle aurait réussi à retenir son adversaire, avant que celle-ci ne lui morde le bras droit et la griffe. D._, qui se trouvait dans un local annexe, serait alors intervenu pour les séparer. Quant à A._, elle a affirmé que B._ l'avait immédiatement empoignée par le bras et les cheveux, pour ensuite la pousser contre la photocopieuse, en la tenant par les cheveux sous son aisselle. Elle l'aurait mordue et griffée pour se dégager, tandis que D._ tentait de les séparer. Entendues comme témoins, C._ et E._, qui a assisté à la scène par la baie vitrée séparant le bureau de l'atelier voisin, ont confirmé en substance la version des faits de B._. F._, qui se trouvait également dans l'atelier, a vu cette dernière se lever et empoigner d'une main les cheveux de A._, en la frappant de l'autre, avant que D._ n'entre dans le bureau, sans toutefois pouvoir déterminer laquelle des deux femmes avait pris l'initiative d'agresser l'autre. La cheffe de production, G._, a confirmé que l'altercation s'était produite peu après qu'elle eut infligé un avertissement à A._ pour avoir refusé d'exécuter un travail urgent que B._ lui avait demandé d'accomplir, et que la jeune femme était très énervée. L'examen médical auquel A._ s'est soumise le lendemain a mis en évidence un hématome de la face externe du bras droit, des contractures musculaires cervicales et dorsales, diminuant la mobilité de la colonne cervicale, une légère dysesthésie du membre supérieur droit et parascapulaire droite supérieure, une diminution du réflexe bicipital D. La jeune femme a dû porter une minerve pendant quelques jours et subi un arrêt de travail d'environ un mois. Le certificat médical de B._ établi le 16 juin 2003 fait état d'une lésion de la face interne du bras droit, avec hématome, et des traces de morsure. L'examen médical auquel A._ s'est soumise le lendemain a mis en évidence un hématome de la face externe du bras droit, des contractures musculaires cervicales et dorsales, diminuant la mobilité de la colonne cervicale, une légère dysesthésie du membre supérieur droit et parascapulaire droite supérieure, une diminution du réflexe bicipital D. La jeune femme a dû porter une minerve pendant quelques jours et subi un arrêt de travail d'environ un mois. Le certificat médical de B._ établi le 16 juin 2003 fait état d'une lésion de la face interne du bras droit, avec hématome, et des traces de morsure. B. A la suite de ces faits, B._ et A._ ont chacune déposé plainte pénale contre l'autre, la première pour voies de fait et injures, la seconde pour voies de fait, éventuellement lésions corporelles. Par ordonnance du 25 août 2003, le Ministère public du canton de Neuchâtel (ci-après: le Ministère public) a reconnu A._ coupable de voies de fait et lésions corporelles simples et l'a condamnée à une amende de 500 fr. Au terme d'une ordonnance rendue le même jour, il a classé la plainte pénale déposée par A._ contre B._ pour des motifs de droit, en vertu de l'art. 8 al. 1 let. a du Code de procédure pénale neuchâtelois (CPP neuch.). Il a estimé en substance que cette dernière n'avait fait que répondre à l'agression de la plaignante et que les gestes effectués étaient excusables sous l'angle de la légitime défense. Statuant par arrêt du 31 octobre 2003, la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel (ci-après: la Chambre d'accusation ou la cour cantonale) a rejeté le recours formé par A._ contre cette décision. Elle a considéré que le Ministère public était fondé à retenir, sur la base du dossier, que B._ avait agi en état de légitime défense et à rendre une ordonnance de classement en ce qui la concerne, sans qu'il y ait lieu de procéder à l'audition de D._. Statuant par arrêt du 31 octobre 2003, la Chambre d'accusation du Tribunal cantonal du canton de Neuchâtel (ci-après: la Chambre d'accusation ou la cour cantonale) a rejeté le recours formé par A._ contre cette décision. Elle a considéré que le Ministère public était fondé à retenir, sur la base du dossier, que B._ avait agi en état de légitime défense et à rendre une ordonnance de classement en ce qui la concerne, sans qu'il y ait lieu de procéder à l'audition de D._. C. Agissant par la voie du recours de droit public, A._ demande au Tribunal fédéral d'annuler cet arrêt et de renvoyer la cause à la Chambre d'accusation pour nouvelle décision au sens des considérants. Elle dénonce une violation de son droit de faire administrer les preuves pertinentes, tel qu'il découle de l'art. 29 al. 2 Cst., une appréciation insoutenable des faits pertinents, ainsi qu'une application arbitraire de l'art. 8 CPP neuch. Elle requiert l'assistance judiciaire. La Chambre d'accusation s'en remet aux considérants de son arrêt. Le Ministère public a renoncé à déposer des observations.